Skip to content

Commit

Permalink
Added tick-box directive, gave each state a container div with its re…
Browse files Browse the repository at this point in the history
…spective class name, and updated some of the existing tickboxes to the new directive
  • Loading branch information
MKHenson committed Jun 16, 2016
1 parent f101153 commit 97f7d7e
Show file tree
Hide file tree
Showing 12 changed files with 568 additions and 496 deletions.
1 change: 1 addition & 0 deletions admin/lib/application.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ module clientAdmin
.directive('itemPanel', ItemPanel.factory())
.directive('searchBar', SearchBar.factory())
.directive('stateHeader', StateHeader.factory())
.directive('tickBox', TickBox.factory())
.config(Config)
.run(["$rootScope", "$location", "$state", "Authenticator", function ($rootScope, $location, $state: ng.ui.IStateService, auth: Authenticator)
{
Expand Down
6 changes: 5 additions & 1 deletion admin/lib/directives/search-bar/search-bar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ module clientAdmin
export class SearchBar implements ng.IDirective
{
restrict = 'E';
template = '<div class="search"><input type="text" ng-model="value" /><div class="search-button sprite sprite-search" ng-click="onClick(value)"></div></div>';
template = `
<div class="search">
<input type="text" ng-model="value" />
<div class="search-button sprite sprite-search" ng-click="onClick(value)"></div>
</div>`;
scope = {
onClick: '=',
value: '='
Expand Down
9 changes: 8 additions & 1 deletion admin/lib/directives/state-header/state-header.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,14 @@ module clientAdmin
{
transclude = true;
restrict = 'E';
template = '<div class="sub-menu"><h>{{text}}</h><img ng-show="loading" src="/media/images/loader.gif" /><div class="console"><ng-transclude></ng-transclude></div></div>';
template = `
<div class="sub-menu">
<h>{{text}}</h>
<img ng-show="loading" src="/media/images/loader.gif" />
<div class="console">
<ng-transclude></ng-transclude>
</div>
</div>`;
scope = {
text: '=',
loading: '='
Expand Down
20 changes: 20 additions & 0 deletions admin/lib/directives/tick-box/style.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.tick-box {
width:20px;
height:20px;
cursor:pointer;
display:inline-block;
background: #F0F0F0;

&:hover {
background: #dbdbdb;
}
&:active {
background: #ccc;
}

.tick {
top: -25%;
width:120%;
height:120%;
}
}
44 changes: 44 additions & 0 deletions admin/lib/directives/tick-box/tick-box.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
module clientAdmin
{
/**
* Simple directive a checkbox
*/
export class TickBox implements ng.IDirective
{
transclude = true;
restrict = 'E';
template = `
<div class="checkbox" ng-click="onClick()">
<div class="tick-box">
<div class="tick" ng-show="checked"></div>
</div>
{{text}}
</div>
`
scope = {
text: '=',
checked: '=',
onTicked: '&?'
}

link( scope )
{
/**
* When we click the tick box, we toggle the checked state
*/
scope.onClick = function()
{
if (scope.onTicked)
scope.onTicked({ticked: scope.checked});
}
}

/**
* Creates an intance of the pager directive
*/
static factory(): ng.IDirectiveFactory {
var directive = () => new TickBox();
return directive;
}
}
}
122 changes: 62 additions & 60 deletions admin/lib/states/media/dash-media.html
Original file line number Diff line number Diff line change
@@ -1,75 +1,77 @@
<error-modal message="mediaController.errorMsg" visible="mediaController.error"></error-modal>
<div class="media">
<error-modal message="mediaController.errorMsg" visible="mediaController.error"></error-modal>

<state-header text="'Media'" loading="mediaController.loading">
<div class="nav-button right" ng-if="controller"><a ng-click="controller.closeMediaBrowser()">Close X</a></div>
<div>
<toggle-button ng-click="mediaController.folderFormVisible = !mediaController.folderFormVisible" ng-show="!mediaController.selectedFolder" text="'New Folder'"></toggle-button>
<add-button ng-click="controller.editPostMode(post)" ngf-select ngf-multiple="true" ngf-change="mediaController.upload($files)" ng-show="mediaController.selectedFolder" text="'Upload File'"></add-button>
<approve-button ng-click="controller.selectFile(mediaController.selectedEntity)" ng-if="controller" ng-show="mediaController.selectedFolder && mediaController.selectedEntity" text="'Select File'"></approve-button>
<div class="nav-button right red-highlight" ng-show="mediaController.selectedEntity && !mediaController.loading"><a ng-click="mediaController.confirmDelete = !mediaController.confirmDelete">Remove</a></div>
<div class="nav-button right view-details" ng-show="mediaController.selectedEntity && !mediaController.loading && mediaController.selectedFolder"><a ng-click="mediaController.editMode = !mediaController.editMode">View Details</a></div>
<div class="fix"></div>
</div>
</state-header>

<div class="media content-view">
<div pager interface="mediaController.pager" limit="10">
<div class="content-page">
<div class="right panel-view expanded" ng-if="mediaController.editMode && mediaController.selectedFolder">
<div class="file-info" ng-show="mediaController.selectedEntity">
<h2 ng-if="!mediaController.editFileMode">{{mediaController.selectedEntity.name}}</h2>
<input ng-if="mediaController.editFileMode" type="text" id="file-name" value="{{mediaController.selectedEntity.name}}" />
<input ng-if="!mediaController.editFileMode" type="text" value="{{mediaController.selectedEntity.publicURL}}" />
<div title="ID" class="detail"><div class="sprite sprite-file-info-id"></div>{{mediaController.selectedEntity.identifier}}</div>
<div title="Created On" class="detail"><div class="sprite sprite-file-info-clock"></div>{{mediaController.selectedEntity.created | date:"MM/dd/yyyy 'at' h:mma"}}</div>
<div title="Size" class="detail"><div class="sprite sprite-file-info-size"></div>{{mediaController.selectedEntity.size | bytes}}</div>
<div title="Mime Type" class="detail"><div class="sprite sprite-file-info-mime"></div>{{mediaController.selectedEntity.mimeType}}</div>
<div title="Num Downloads" class="detail"><div class="sprite sprite-file-info-downloads"></div>{{mediaController.selectedEntity.numDownloads}}</div>
<approve-button ng-click="mediaController.renameFile(mediaController.selectedEntity)" ng-if="mediaController.editFileMode && !mediaController.loading" text="'Update'"></approve-button>
<div class="cancel nav-button file-edit"><a ng-click="mediaController.editFileMode = !mediaController.editFileMode">{{ (!mediaController.editFileMode ? "Edit" : "Cancel") }}</a></div>
</div>
</div>
<div class="left panel-view" ng-class="{ expanded : mediaController.editMode && mediaController.selectedFolder }">
<div class="user-confirmation animated-panel" ng-show="mediaController.confirmDelete">
<div>Are you sure you want to delete these {{mediaController.selectedFolder ? "file": "folder" }}s</div>
<remove-button ng-click="mediaController.removeEntities()" text="'Yes'" no-icon="true" ></remove-button>
<remove-button ng-click="mediaController.confirmDelete=false" text="'No'" no-icon="true" ></remove-button>
</div>
<state-header text="'Media'" loading="mediaController.loading">
<div class="nav-button right" ng-if="controller"><a ng-click="controller.closeMediaBrowser()">Close X</a></div>
<div>
<toggle-button ng-click="mediaController.folderFormVisible = !mediaController.folderFormVisible" ng-show="!mediaController.selectedFolder" text="'New Folder'"></toggle-button>
<add-button ng-click="controller.editPostMode(post)" ngf-select ngf-multiple="true" ngf-change="mediaController.upload($files)" ng-show="mediaController.selectedFolder" text="'Upload File'"></add-button>
<approve-button ng-click="controller.selectFile(mediaController.selectedEntity)" ng-if="controller" ng-show="mediaController.selectedFolder && mediaController.selectedEntity" text="'Select File'"></approve-button>
<div class="nav-button right red-highlight" ng-show="mediaController.selectedEntity && !mediaController.loading"><a ng-click="mediaController.confirmDelete = !mediaController.confirmDelete">Remove</a></div>
<div class="nav-button right view-details" ng-show="mediaController.selectedEntity && !mediaController.loading && mediaController.selectedFolder"><a ng-click="mediaController.editMode = !mediaController.editMode">View Details</a></div>
<div class="fix"></div>
</div>
</state-header>

<div class="folder-options animated-panel" ng-show="mediaController.folderFormVisible">
<div class="filter-group">
<div class="label">Folder Name:</div>
<div class="new-folder">
<input id="new-folder" type="text" />
<approve-button ng-click="mediaController.newFolder()" ng-show="!mediaController.loading" text="'Add'"></approve-button>
</div>
<div class="media content-view">
<div pager interface="mediaController.pager" limit="10">
<div class="content-page">
<div class="right panel-view expanded" ng-if="mediaController.editMode && mediaController.selectedFolder">
<div class="file-info" ng-show="mediaController.selectedEntity">
<h2 ng-if="!mediaController.editFileMode">{{mediaController.selectedEntity.name}}</h2>
<input ng-if="mediaController.editFileMode" type="text" id="file-name" value="{{mediaController.selectedEntity.name}}" />
<input ng-if="!mediaController.editFileMode" type="text" value="{{mediaController.selectedEntity.publicURL}}" />
<div title="ID" class="detail"><div class="sprite sprite-file-info-id"></div>{{mediaController.selectedEntity.identifier}}</div>
<div title="Created On" class="detail"><div class="sprite sprite-file-info-clock"></div>{{mediaController.selectedEntity.created | date:"MM/dd/yyyy 'at' h:mma"}}</div>
<div title="Size" class="detail"><div class="sprite sprite-file-info-size"></div>{{mediaController.selectedEntity.size | bytes}}</div>
<div title="Mime Type" class="detail"><div class="sprite sprite-file-info-mime"></div>{{mediaController.selectedEntity.mimeType}}</div>
<div title="Num Downloads" class="detail"><div class="sprite sprite-file-info-downloads"></div>{{mediaController.selectedEntity.numDownloads}}</div>
<approve-button ng-click="mediaController.renameFile(mediaController.selectedEntity)" ng-if="mediaController.editFileMode && !mediaController.loading" text="'Update'"></approve-button>
<div class="cancel nav-button file-edit"><a ng-click="mediaController.editFileMode = !mediaController.editFileMode">{{ (!mediaController.editFileMode ? "Edit" : "Cancel") }}</a></div>
</div>
<div class="fix"></div>
</div>
<div class="drive">
<div class="folders" ng-if="!mediaController.selectedFolder">
<div class="folder unselectable" ng-dblclick="mediaController.openFolder(folder)" ng-click="mediaController.selectEntity(folder)" ng-repeat="folder in mediaController.entries" ng-class="{ selected : folder.selected }">
<div class="icon sprite sprite-folder"></div>{{folder.name}}
</div>
<div class="left panel-view" ng-class="{ expanded : mediaController.editMode && mediaController.selectedFolder }">
<div class="user-confirmation animated-panel" ng-show="mediaController.confirmDelete">
<div>Are you sure you want to delete these {{mediaController.selectedFolder ? "file": "folder" }}s</div>
<remove-button ng-click="mediaController.removeEntities()" text="'Yes'" no-icon="true" ></remove-button>
<remove-button ng-click="mediaController.confirmDelete=false" text="'No'" no-icon="true" ></remove-button>
</div>
<div class="files" ng-if="mediaController.selectedFolder">
<div class="folder unselectable" ng-dblclick="mediaController.openFolder()">
<div class="icon sprite sprite-folder"></div>.. {{mediaController.selectedFolder.name}}

<div class="folder-options animated-panel" ng-show="mediaController.folderFormVisible">
<div class="filter-group">
<div class="label">Folder Name:</div>
<div class="new-folder">
<input id="new-folder" type="text" />
<approve-button ng-click="mediaController.newFolder()" ng-show="!mediaController.loading" text="'Add'"></approve-button>
</div>
</div>
<div class="fix"></div>
<div class="file unselectable" ng-click="mediaController.selectEntity(file)" ng-repeat="file in mediaController.entries" ng-class="{ selected : file.selected }">
</div>
<div class="drive">
<div class="folders" ng-if="!mediaController.selectedFolder">
<div class="folder unselectable" ng-dblclick="mediaController.openFolder(folder)" ng-click="mediaController.selectEntity(folder)" ng-repeat="folder in mediaController.entries" ng-class="{ selected : folder.selected }">
<div class="icon sprite sprite-folder"></div>{{folder.name}}
</div>
</div>
<div class="files" ng-if="mediaController.selectedFolder">
<div class="folder unselectable" ng-dblclick="mediaController.openFolder()">
<div class="icon sprite sprite-folder"></div>.. {{mediaController.selectedFolder.name}}
</div>
<div class="fix"></div>
<div class="file unselectable" ng-click="mediaController.selectEntity(file)" ng-repeat="file in mediaController.entries" ng-class="{ selected : file.selected }">

<div class="file-preview" ng-switch on="file.mimeType">
<div class="background-tiles inner" ng-switch-when="image/jpeg"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-when="image/png"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-when="image/gif"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-default><div class="div-center"></div><div class="icon sprite sprite-standard-file"></div></div>
<div class="file-preview" ng-switch on="file.mimeType">
<div class="background-tiles inner" ng-switch-when="image/jpeg"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-when="image/png"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-when="image/gif"><div class="div-center"></div><img src="{{file.publicURL}}" /></div>
<div class="background-tiles inner" ng-switch-default><div class="div-center"></div><div class="icon sprite sprite-standard-file"></div></div>
</div>
<div class="file-name">{{file.name}}</div>
</div>
<div class="file-name">{{file.name}}</div>
</div>
</div>
<div class="fix"></div>
</div>
<div class="fix"></div>
</div>
</div>
</div>
Expand Down
Loading

0 comments on commit 97f7d7e

Please sign in to comment.