1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-03 14:24:23 +01:00
fab-manager/app/frontend/templates/projects/index.html

133 lines
7.2 KiB
HTML
Raw Normal View History

2015-05-05 03:10:25 +02:00
<section class="heading b-b">
<div class="row no-gutter">
<div class="col-xs-2 col-sm-2 col-md-1">
<section class="heading-btn">
<a ng-click="backPrevLocation($event)"><i class="fas fa-long-arrow-alt-left "></i></a>
2015-05-05 03:10:25 +02:00
</section>
</div>
<div class="col-xs-10 col-sm-10 col-md-8 b-l b-r-md">
<section class="heading-title">
2019-12-16 16:54:40 +01:00
<h1 translate>{{ 'app.public.projects_list.the_fablab_projects' }}</h1>
2015-05-05 03:10:25 +02:00
</section>
</div>
2020-04-29 18:21:06 +02:00
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized(['admin','member', 'manager'])">
2015-05-05 03:10:25 +02:00
<section class="heading-actions wrapper">
2019-12-16 16:54:40 +01:00
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm" ui-sref="app.logged.projects_new" role="button" translate>{{ 'app.public.projects_list.add_a_project' }}</a>
2015-05-05 03:10:25 +02:00
</section>
</div>
</div>
</section>
2023-01-20 18:17:50 +01:00
<section class="projects">
<div class="projects-filters">
<header>
2023-07-03 11:42:29 +02:00
<h3 translate>{{ 'app.public.projects_list.filter' }}</h3>
2023-01-20 18:17:50 +01:00
<a href="javascript:void(0);" class="fab-button is-black" name="button" ng-click="resetFiltersAndTriggerSearch()" ng-show="!openlab.searchOverWholeNetwork">{{ 'app.public.projects_list.reset_all_filters' | translate }}</a>
</header>
<span class="switch" ng-if="openlab.projectsActive" uib-tooltip="{{ 'app.public.projects_list.tooltip_openlab_projects_switch' | translate }}" tooltip-trigger="mouseenter">
<label for="searchOverWholeNetwork" class="control-label text-sm" translate>{{ 'app.public.projects_list.network_search' }}</label>
<input bs-switch
ng-model="openlab.searchOverWholeNetwork"
type="checkbox"
class="form-control"
switch-on-text="{{ 'app.shared.buttons.yes' | translate }}"
switch-off-text="{{ 'app.shared.buttons.no' | translate }}"
switch-animate="true"
ng-change="searchOverWholeNetworkChanged()"
/>
</span>
2015-05-05 03:10:25 +02:00
2023-01-20 18:17:50 +01:00
<form role="form" ng-submit="setUrlQueryParams(search) && triggerSearch()">
<div class="keywords">
<input type="search" class="form-control" placeholder="{{ 'app.public.projects_list.keywords' | translate }}" ng-model="search.q"/>
<button type="submit" class="fab-button fab-button--icon-only is-secondary"><i class="fas fa-search"></i></button>
<!--<button type="submit" class="btn btn-warning" translate>{{ 'app.public.projects_list.search' }}</button>-->
</div>
2023-01-20 18:17:50 +01:00
</form>
2015-05-05 03:10:25 +02:00
2023-01-20 18:17:50 +01:00
<div class="grp" ng-if="!openlab.searchOverWholeNetwork">
<select ng-show="isAuthenticated()" ng-model="search.from" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control">
<option value="" translate>{{ 'app.public.projects_list.all_projects' }}</option>
<option value="mine" translate>{{ 'app.public.projects_list.my_projects' }}</option>
<option value="collaboration" translate>{{ 'app.public.projects_list.projects_to_whom_i_take_part_in' }}</option>
</select>
2015-05-05 03:10:25 +02:00
2023-01-20 18:17:50 +01:00
<select ng-model="search.machine_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="m.id as m.name for m in machines">
<option value="" translate>{{ 'app.public.projects_list.all_machines' }}</option>
</select>
2015-05-05 03:10:25 +02:00
2023-01-20 18:17:50 +01:00
<select ng-model="search.theme_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="t.id as t.name for t in themes">
<option value="" translate>{{ 'app.public.projects_list.all_themes' }}</option>
</select>
2016-05-02 16:10:48 +02:00
<select ng-show="projectCategories.length" ng-model="search.project_category_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="pc.id as pc.name for pc in projectCategories">
2023-06-29 08:47:42 +02:00
<option value="" translate>{{ projectCategoriesFilterPlaceholder }}</option>
</select>
2023-01-20 18:17:50 +01:00
<select ng-model="search.component_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="t.id as t.name for t in components">
<option value="" translate>{{ 'app.public.projects_list.all_materials' }}</option>
</select>
2023-06-29 14:32:06 +02:00
<ui-select ng-if="currentUser && memberFilterPresence" ng-model="searchMember" on-select="setSearchMemberId(searchMember) && setUrlQueryParams(search) && triggerSearch()">
<ui-select-match allow-clear="true" placeholder="{{ 'app.public.projects_list.filter_by_member' | translate }}">
<span ng-bind="$select.selected.name"></span>
</ui-select-match>
<ui-select-choices repeat="m in matchingMembers" refresh="autoCompleteMemberName($select.search)" refresh-delay="300">
<span ng-bind-html="m.name | highlight: $select.search"></span>
</ui-select-choices>
</ui-select>
2023-07-03 11:42:29 +02:00
<label class="form-group m-n" ng-if="dateFiltersPresence">
<div class="form-item-header">
<p translate>{{ 'app.public.projects_list.created_from' }}</p>
</div>
<input class="form-control"
ng-model="search.from_date"
ng-model-options='{ debounce: 1000 }'
ng-change="setUrlQueryParams(search) && triggerSearch()"
type="date"
min="2000-01-01"
max="2060-01-01"/>
</label>
<label class="form-group m-n" ng-if="dateFiltersPresence">
<div class="form-item-header">
<p translate>{{ 'app.public.projects_list.created_to' }}</p>
</div>
<input class="form-control"
ng-model="search.to_date"
ng-model-options='{ debounce: 1000 }'
ng-change="setUrlQueryParams(search) && triggerSearch()"
type="date"
min="2000-01-01"
max="2060-01-01"/>
</label>
2023-01-20 18:17:50 +01:00
<status-filter on-filter-change="onStatusChange" current-status-index="search.status_id"/>
</div>
2023-06-30 11:15:37 +02:00
<div class="text-center m m-b-lg" ng-if="!openlab.searchOverWholeNetwork && (projects.length != 0) && (isAuthorized('admin') || isAuthorized('manager'))">
<a class="btn bg-light text-black" ng-href="{{ zipUrl }}" target="_blank">
<i class="fa fa-download"></i> {{ 'app.public.projects_list.download_archive' | translate }}
</a>
</div>
2023-01-20 18:17:50 +01:00
</div>
2015-05-05 03:10:25 +02:00
2023-01-20 18:17:50 +01:00
<div class="projects-list">
<span ng-show="projects && (projects.length == 0)"> {{ 'app.public.projects_list.project_search_result_is_empty' | translate }} </span>
<div class="project-card" ng-repeat="project in projects" ng-click="showProject(project)">
<div class="project-image" style="background-image: url({{project.project_image}});">
<img src="data:image/png;base64," data-src="holder.js/100%x100%/text:&#xf03e;/font:'Font Awesome 5 Free'/icon" bs-holder ng-if="!project.project_image">
2016-03-23 18:39:41 +01:00
</div>
2016-05-02 16:10:48 +02:00
2023-01-20 18:17:50 +01:00
<div class="project-info">
2019-12-16 16:54:40 +01:00
<span class="badge" ng-if="project.state == 'draft'" translate>{{ 'app.public.projects_list.rough_draft' }}</span>
2023-01-20 18:17:50 +01:00
<p class="name">{{project.name}}</p>
<span class="openlab" ng-if="openlab.searchOverWholeNetwork"><i class="fa fa-tag"></i> {{ project.app_name }}</span>
</div>
2016-03-23 18:39:41 +01:00
</div>
2023-09-27 15:36:00 +02:00
<a class="fab-button is-secondary" ng-click="loadMore()" ng-if="projectsPagination.hasNextPage()" translate>{{ 'app.public.projects_list.load_next_projects' }}</a>
2015-05-05 03:10:25 +02:00
</div>
</section>