|
src/app/app.component.ts
|
component
|
AppComponent
|
0 %
(0/6)
|
|
src/app/auth/auth-guard.service.ts
|
injectable
|
AuthGuardService
|
0 %
(0/4)
|
|
src/app/auth/auth.service.ts
|
injectable
|
AuthService
|
0 %
(0/8)
|
|
src/app/config.service.server.ts
|
injectable
|
ServerConfigService
|
0 %
(0/5)
|
|
src/app/config.service.server.ts
|
function
|
require
|
0 %
(0/1)
|
|
src/app/config.service.server.ts
|
variable
|
config
|
0 %
(0/1)
|
|
src/app/config.service.ts
|
injectable
|
ConfigService
|
0 %
(0/5)
|
|
src/app/config.service.ts
|
function
|
require
|
0 %
(0/1)
|
|
src/app/config.service.ts
|
variable
|
config
|
0 %
(0/1)
|
|
src/app/domain/case-viewer/components/case-viewer/case-viewer.component.ts
|
component
|
CaseViewerComponent
|
0 %
(0/6)
|
|
src/app/domain/case-viewer/components/document-panel/document-panel.component.ts
|
component
|
DocumentPanelComponent
|
0 %
(0/10)
|
|
src/app/domain/case-viewer/components/parties-panel/parties-panel.component.ts
|
component
|
PartiesPanelComponent
|
0 %
(0/2)
|
|
src/app/domain/case-viewer/components/questions-panel/mock/mock-questions.mock.ts
|
variable
|
emptyQuestion
|
0 %
(0/1)
|
|
src/app/domain/case-viewer/components/questions-panel/mock/mock-questions.mock.ts
|
variable
|
question
|
0 %
(0/1)
|
|
src/app/domain/case-viewer/components/questions-panel/mock/mock-questions.mock.ts
|
variable
|
questionIssuePending
|
0 %
(0/1)
|
|
src/app/domain/case-viewer/components/questions-panel/mock/mock-questions.mock.ts
|
variable
|
questionIssuePending2
|
0 %
(0/1)
|
|
src/app/domain/case-viewer/components/questions-panel/questions-panel.component.ts
|
component
|
QuestionsPanelComponent
|
0 %
(0/9)
|
|
src/app/domain/case-viewer/components/summary-panel/summary-panel.component.ts
|
component
|
SummaryPanelComponent
|
0 %
(0/2)
|
|
src/app/domain/case-viewer/components/timeline-panel/timeline-panel.component.ts
|
component
|
TimelinePanelComponent
|
0 %
(0/2)
|
|
src/app/domain/components/casebar/casebar.component.ts
|
component
|
CaseBarComponent
|
0 %
(0/3)
|
|
src/app/domain/components/header/header.component.ts
|
component
|
HeaderComponent
|
0 %
(0/4)
|
|
src/app/domain/components/questions/check/check.component.ts
|
component
|
CheckQuestionsComponent
|
0 %
(0/9)
|
|
src/app/domain/components/questions/create/create.component.ts
|
component
|
CreateQuestionsComponent
|
0 %
(0/14)
|
|
src/app/domain/components/questions/delete/delete.component.ts
|
component
|
DeleteQuestionComponent
|
0 %
(0/8)
|
|
src/app/domain/components/questions/edit/edit.component.ts
|
component
|
EditQuestionComponent
|
0 %
(0/13)
|
|
src/app/domain/components/questions/view/view.component.ts
|
component
|
ViewQuestionComponent
|
0 %
(0/8)
|
|
src/app/domain/components/search-result/search-result.component.ts
|
component
|
SearchResultComponent
|
0 %
(0/6)
|
|
src/app/domain/services/case.service.ts
|
injectable
|
CaseService
|
0 %
(0/5)
|
|
src/app/domain/services/decision.service.ts
|
injectable
|
DecisionService
|
0 %
(0/9)
|
|
src/app/domain/services/hearing.service.ts
|
injectable
|
HearingService
|
0 %
(0/7)
|
|
src/app/domain/services/question.service.ts
|
injectable
|
QuestionService
|
0 %
(0/10)
|
|
src/app/forms/components/form/form.component.ts
|
component
|
FormComponent
|
0 %
(0/10)
|
|
src/app/forms/components/form/form.component.ts
|
interface
|
JUIFormInterface
|
0 %
(0/6)
|
|
src/app/forms/components/radio-buttons/radio-buttons.component.ts
|
component
|
RadioButtonsComponent
|
0 %
(0/10)
|
|
src/app/forms/components/text/text.component.ts
|
component
|
TextComponent
|
0 %
(0/10)
|
|
src/app/forms/components/textarea/textarea.component.ts
|
component
|
TextareaComponent
|
0 %
(0/10)
|
|
src/app/forms/services/form.service.server.ts
|
injectable
|
ServerFormService
|
0 %
(0/3)
|
|
src/app/forms/services/form.service.ts
|
injectable
|
FormService
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-back-link/govuk-back-link.component.ts
|
component
|
GovukBackLinkComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-breadcrumbs/govuk-breadcrumbs.component.ts
|
component
|
GovukBreadcrumbsComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-button/govuk-button.component.ts
|
component
|
GovukButtonComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-checkboxes/govuk-checkboxes.component.ts
|
component
|
GovukCheckboxesComponent
|
0 %
(0/7)
|
|
src/app/govuk/components/govuk-date-input/govuk-date-input.component.ts
|
component
|
GovukDateInputComponent
|
0 %
(0/7)
|
|
src/app/govuk/components/govuk-details/govuk-details.component.ts
|
component
|
GovukDetailsComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-error-summary/govuk-error-summary.component.ts
|
component
|
GovukErrorSummaryComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-fieldset/govuk-fieldset.component.ts
|
component
|
GovukFieldsetComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-file-upload/govuk-file-upload.component.ts
|
component
|
GovukFileUploadComponent
|
0 %
(0/5)
|
|
src/app/govuk/components/govuk-footer/govuk-footer.component.ts
|
component
|
GovukFooterComponent
|
0 %
(0/2)
|
|
src/app/govuk/components/govuk-header/govuk-header.component.ts
|
component
|
GovukHeaderComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-input/govuk-input.component.ts
|
component
|
GovukInputComponent
|
0 %
(0/6)
|
|
src/app/govuk/components/govuk-inset-text/govuk-inset-text.component.ts
|
component
|
GovukInsetTextComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-panel/govuk-panel.component.ts
|
component
|
GovukPanelComponent
|
0 %
(0/5)
|
|
src/app/govuk/components/govuk-phase-banner/govuk-phase-banner.component.ts
|
component
|
GovukPhaseBannerComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-radios/govuk-radios.component.ts
|
component
|
GovukRadiosComponent
|
0 %
(0/8)
|
|
src/app/govuk/components/govuk-select/govuk-select.component.ts
|
component
|
GovukSelectComponent
|
0 %
(0/6)
|
|
src/app/govuk/components/govuk-skip-link/govuk-skip-link.component.ts
|
component
|
GovukSkipLinkComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-table/govuk-table.component.ts
|
component
|
GovukTableComponent
|
0 %
(0/7)
|
|
src/app/govuk/components/govuk-tabs/govuk-tabs.component.ts
|
component
|
GovukTabsComponent
|
0 %
(0/4)
|
|
src/app/govuk/components/govuk-tag/govuk-tag.component.ts
|
component
|
GovukTagComponent
|
0 %
(0/3)
|
|
src/app/govuk/components/govuk-textarea/govuk-textarea.component.ts
|
component
|
GovukTextareaComponent
|
0 %
(0/6)
|
|
src/app/govuk/components/govuk-warning-text/govuk-warning-text.component.ts
|
component
|
GovukWarningTextComponent
|
0 %
(0/4)
|
|
src/app/hmcts/components/hmcts-alert/hmcts-alert.component.ts
|
component
|
HmctsAlertComponent
|
0 %
(0/6)
|
|
src/app/hmcts/components/hmcts-details-bar/hmcts-details-bar.component.ts
|
component
|
HmctsDetailsBarComponent
|
0 %
(0/6)
|
|
src/app/hmcts/components/hmcts-global-footer/hmcts-global-footer.component.ts
|
component
|
HmctsGlobalFooterComponent
|
0 %
(0/5)
|
|
src/app/hmcts/components/hmcts-global-footer/mock/hmcts-global-footer.mock.ts
|
variable
|
helpData
|
0 %
(0/1)
|
|
src/app/hmcts/components/hmcts-global-footer/mock/hmcts-global-footer.mock.ts
|
variable
|
navigationData
|
0 %
(0/1)
|
|
src/app/hmcts/components/hmcts-global-header/hmcts-global-header.component.ts
|
component
|
HmctsGlobalHeaderComponent
|
0 %
(0/4)
|
|
src/app/hmcts/components/hmcts-primary-navigation/hmcts-primary-navigation.component.ts
|
component
|
HmctsPrimaryNavigationComponent
|
0 %
(0/4)
|
|
src/app/hmcts/components/hmcts-progress-bar/hmcts-progress-bar.component.ts
|
component
|
HmctsProgressBarComponent
|
0 %
(0/3)
|
|
src/app/hmcts/components/hmcts-sub-navigation/hmcts-sub-navigation.component.ts
|
component
|
HmctsSubNavigationComponent
|
0 %
(0/4)
|
|
src/app/hmcts/components/hmcts-timeline/hmcts-timeline.component.ts
|
component
|
HmctsTimelineComponent
|
0 %
(0/3)
|
|
src/app/hmcts/pipes/sentence-case/sentence-case-pipe.ts
|
pipe
|
SentenceCasePipe
|
0 %
(0/1)
|
|
src/app/routing/pages/decisions/check-decision/check-decision.component.ts
|
component
|
CheckDecisionComponent
|
0 %
(0/18)
|
|
src/app/routing/pages/decisions/create-decision/create-decision.component.ts
|
component
|
CreateDecisionComponent
|
0 %
(0/18)
|
|
src/app/routing/pages/decisions/decision-confirmation/decision-confirmation.component.ts
|
component
|
DecisionConfirmationComponent
|
0 %
(0/4)
|
|
src/app/routing/pages/decisions/fr/draft-consent-order/draft-consent-order.component.ts
|
component
|
DraftConsentOrderComponent
|
0 %
(0/14)
|
|
src/app/routing/pages/decisions/fr/hearing-details/hearing-details.component.ts
|
component
|
HearingDetailsComponent
|
0 %
(0/13)
|
|
src/app/routing/pages/decisions/fr/make-decision/make-decision.component.ts
|
component
|
MakeDecisionComponent
|
0 %
(0/14)
|
|
src/app/routing/pages/decisions/fr/notes-for-court-administrator/notes-for-court-administrator.component.ts
|
component
|
NotesForCourtAdministratorComponent
|
0 %
(0/14)
|
|
src/app/routing/pages/decisions/fr/reasons-co-not-approved/reasons-co-not-approved.component.ts
|
component
|
ReasonsCoNotApprovedComponent
|
7 %
(1/14)
|
|
src/app/routing/pages/decisions/root/root.component.ts
|
component
|
DecisionRootComponent
|
0 %
(0/4)
|
|
src/app/routing/pages/generic-page/check-your-answers/check-your-answers.component.ts
|
component
|
CheckYourAnswersComponent
|
0 %
(0/3)
|
|
src/app/routing/pages/generic-page/confirmation/confirmation.component.ts
|
component
|
ConfirmationComponent
|
0 %
(0/3)
|
|
src/app/routing/pages/generic-page/cookies/cookies.component.ts
|
component
|
CookiesComponent
|
0 %
(0/2)
|
|
src/app/routing/pages/generic-page/dashboard/dashboard.component.ts
|
component
|
DashboardComponent
|
0 %
(0/2)
|
|
src/app/routing/pages/generic-page/demo/demo.component.ts
|
component
|
DemoComponent
|
0 %
(0/2)
|
|
src/app/routing/pages/generic-page/error-service-unavailable/error-service-unavailable.component.ts
|
component
|
ErrorServiceUnavailableComponent
|
0 %
(0/3)
|
|
src/app/routing/pages/generic-page/generic-page.component.ts
|
component
|
GenericPageComponent
|
0 %
(0/3)
|
|
src/app/routing/pages/generic-page/privacy-policy/privacy-policy.component.ts
|
component
|
PrivacyPolicyComponent
|
0 %
(0/2)
|
|
src/app/routing/pages/generic-page/task-list/task-list.component.ts
|
component
|
TaskListComponent
|
0 %
(0/3)
|
|
src/app/routing/pages/generic-page/terms-and-conditions/terms-and-conditions.component.ts
|
component
|
TermsAndConditionsComponent
|
0 %
(0/2)
|
|
src/app/routing/pages/hearings/check-hearing/check-hearing.component.ts
|
component
|
CheckHearingComponent
|
0 %
(0/12)
|
|
src/app/routing/pages/hearings/create-hearing/create-hearing.component.ts
|
component
|
CreateHearingComponent
|
0 %
(0/13)
|
|
src/app/routing/pages/hearings/hearing-confirmation/hearing-confirmation.component.ts
|
component
|
HearingConfirmationComponent
|
0 %
(0/4)
|
|
src/app/routing/pages/hearings/root/root.component.ts
|
component
|
HearingRootComponent
|
0 %
(0/4)
|
|
src/app/routing/pages/view-case/view-case.component.ts
|
component
|
ViewCaseComponent
|
0 %
(0/10)
|
|
src/app/routing/redirection.service.server.ts
|
injectable
|
ServerRedirectionService
|
0 %
(0/3)
|
|
src/app/routing/redirection.service.ts
|
injectable
|
RedirectionService
|
0 %
(0/3)
|
|
src/app/shared/components/buttons/buttons.component.ts
|
component
|
ButtonsComponent
|
0 %
(0/8)
|
|
src/app/shared/components/case-action-alert/case-action-alert.component.ts
|
component
|
CaseActionAlertComponent
|
0 %
(0/7)
|
|
src/app/shared/components/case-actions/case-actions.component.ts
|
component
|
CaseActionsComponent
|
0 %
(0/5)
|
|
src/app/shared/components/checkbox/checkbox.component.ts
|
component
|
CheckboxComponent
|
0 %
(0/9)
|
|
src/app/shared/components/data-list/data-list.component.ts
|
component
|
DataListComponent
|
0 %
(0/6)
|
|
src/app/shared/components/document-list/document-list.component.ts
|
component
|
DocumentListComponent
|
0 %
(0/20)
|
|
src/app/shared/components/document-upload/document-upload.component.ts
|
component
|
DocumentUploadComponent
|
0 %
(0/11)
|
|
src/app/shared/components/document-viewer/document-viewer.component.ts
|
component
|
DocumentViewerComponent
|
0 %
(0/15)
|
|
src/app/shared/components/document-viewer/document-viewer.service.ts
|
injectable
|
DocumentViewerService
|
0 %
(0/3)
|
|
src/app/shared/components/document-viewer/url-fixer.service.ts
|
injectable
|
UrlFixerService
|
0 %
(0/2)
|
|
src/app/shared/components/document-viewer/viewers/img-viewer/img-viewer.component.ts
|
component
|
ImgViewerComponent
|
0 %
(0/10)
|
|
src/app/shared/components/document-viewer/viewers/unsupported-viewer/unsupported-viewer.component.ts
|
component
|
UnsupportedViewerComponent
|
0 %
(0/10)
|
|
src/app/shared/components/document-viewer/viewers/viewer-anchor.directive.ts
|
directive
|
ViewerAnchorDirective
|
0 %
(0/3)
|
|
src/app/shared/components/document-viewer/viewers/viewer-factory.service.ts
|
injectable
|
ViewerFactoryService
|
0 %
(0/8)
|
|
src/app/shared/components/document-viewer/viewers/viewer.ts
|
interface
|
Viewer
|
0 %
(0/8)
|
|
src/app/shared/components/document/case-file-annotation-list/case-file-annotation-list.component.ts
|
component
|
CaseFileAnnotationListComponent
|
0 %
(0/3)
|
|
src/app/shared/components/document/case-file-tool-bar/case-file-tool-bar.component.ts
|
component
|
CaseFileToolBarComponent
|
0 %
(0/7)
|
|
src/app/shared/components/document/case-file-tree-list/case-file-tree-list.component.ts
|
component
|
CaseFileTreeListComponent
|
0 %
(0/4)
|
|
src/app/shared/components/document/case-file-viewer/case-file-viewer.component.ts
|
component
|
CaseFileViewerComponent
|
0 %
(0/6)
|
|
src/app/shared/components/document/case-file/case-file.component.ts
|
component
|
CaseFileComponent
|
0 %
(0/10)
|
|
src/app/shared/components/fieldset/fieldset.component.ts
|
component
|
FieldsetComponent
|
0 %
(0/9)
|
|
src/app/shared/components/footer/footer.component.ts
|
component
|
FooterComponent
|
0 %
(0/3)
|
|
src/app/shared/components/footer/footer.model.ts
|
interface
|
Helper
|
0 %
(0/5)
|
|
src/app/shared/components/footer/footer.model.ts
|
interface
|
Navigation
|
0 %
(0/2)
|
|
src/app/shared/components/footer/footer.model.ts
|
interface
|
NavigationItems
|
0 %
(0/3)
|
|
src/app/shared/components/hint/hint.component.ts
|
component
|
HintComponent
|
0 %
(0/2)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/components/annotation-pdf-viewer/annotation-pdf-viewer.component.ts
|
component
|
AnnotationPdfViewerComponent
|
0 %
(0/24)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/components/comments/comment-item/comment-item.component.ts
|
component
|
CommentItemComponent
|
0 %
(0/26)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/components/comments/comments.component.ts
|
component
|
CommentsComponent
|
0 %
(0/13)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/components/contextual-toolbar/contextual-toolbar.component.ts
|
component
|
ContextualToolbarComponent
|
0 %
(0/16)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
class
|
Annotation
|
0 %
(0/16)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
class
|
AnnotationSet
|
0 %
(0/11)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
class
|
Comment
|
0 %
(0/11)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
class
|
IdamDetails
|
0 %
(0/5)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
class
|
Rectangle
|
0 %
(0/14)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
interface
|
IAnnotation
|
0 %
(0/15)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
interface
|
IAnnotationSet
|
0 %
(0/10)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
interface
|
IComment
|
0 %
(0/10)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-set.model.ts
|
interface
|
IRectangle
|
0 %
(0/13)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/annotation-store.service.ts
|
injectable
|
AnnotationStoreService
|
0 %
(0/33)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/api-http.service.ts
|
injectable
|
ApiHttpService
|
0 %
(0/10)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/document-task.model.ts
|
class
|
DocumentTask
|
0 %
(0/11)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/document-task.model.ts
|
interface
|
IDocumentTask
|
0 %
(0/10)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/idam-details.model.ts
|
class
|
IdamDetails
|
0 %
(0/5)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/idam-details.model.ts
|
interface
|
IIdamDetails
|
0 %
(0/4)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/js-wrapper/pdf-annotate-wrapper.ts
|
class
|
PdfAnnotateWrapper
|
0 %
(0/8)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/js-wrapper/pdf-annotate-wrapper.ts
|
variable
|
PDFAnnotate
|
0 %
(0/1)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/js-wrapper/pdf-wrapper.ts
|
class
|
PdfWrapper
|
0 %
(0/3)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/js-wrapper/pdf-wrapper.ts
|
variable
|
PDFJS
|
0 %
(0/1)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/npa.service.ts
|
injectable
|
NpaService
|
0 %
(0/5)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/pdf-adapter.ts
|
injectable
|
PdfAdapter
|
0 %
(0/18)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/pdf.service.ts
|
injectable
|
PdfService
|
0 %
(0/22)
|
|
src/app/shared/components/hmcts-annotation-ui-lib/data/utils.ts
|
class
|
Utils
|
0 %
(0/8)
|
|
src/app/shared/components/inputs/inputs.component.ts
|
component
|
InputsComponent
|
0 %
(0/8)
|
|
src/app/shared/components/jui-form-elements/jui-form-elements.component.ts
|
component
|
JuiFormElementsComponent
|
0 %
(0/4)
|
|
src/app/shared/components/label/label.component.ts
|
component
|
LabelComponent
|
0 %
(0/6)
|
|
src/app/shared/components/legend/legend.component.ts
|
component
|
LegendComponent
|
0 %
(0/2)
|
|
src/app/shared/components/question-list/question-list.component.ts
|
component
|
QuestionListComponent
|
0 %
(0/3)
|
|
src/app/shared/components/question/question.component.ts
|
component
|
QuestionComponent
|
0 %
(0/5)
|
|
src/app/shared/components/radiobutton/radiobutton.component.ts
|
component
|
RadiobuttonComponent
|
0 %
(0/10)
|
|
src/app/shared/components/status/status.component.ts
|
component
|
StatusComponent
|
0 %
(0/4)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
interface
|
JuiCaseField
|
0 %
(0/9)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
interface
|
JuiColumn
|
0 %
(0/5)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
variable
|
mockColumData
|
0 %
(0/1)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
variable
|
mockDataWithNoRows
|
0 %
(0/1)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
variable
|
mockDataWithTwoRows
|
0 %
(0/1)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
variable
|
mockResultData
|
0 %
(0/1)
|
|
src/app/shared/components/table/mock/table.mock.ts
|
variable
|
mockResultData2
|
0 %
(0/1)
|
|
src/app/shared/components/table/table.component.ts
|
component
|
TableComponent
|
0 %
(0/5)
|
|
src/app/shared/components/tabs/tabs.component.ts
|
component
|
TabsComponent
|
0 %
(0/10)
|
|
src/app/shared/components/textareas/textareas.component.ts
|
component
|
TextareasComponent
|
12 %
(2/16)
|
|
src/app/shared/components/timeline/mock/timeline.mock.ts
|
variable
|
mockData
|
0 %
(0/1)
|
|
src/app/shared/components/timeline/timeline.component.ts
|
component
|
TimelineComponent
|
0 %
(0/4)
|
|
src/app/shared/components/validation-error-formcontrol/validation-error-formcontrol.component.ts
|
component
|
ValidationErrorFormControlComponent
|
20 %
(1/5)
|
|
src/app/shared/components/validation-error-formgroup/validation-error-formgroup.component.ts
|
component
|
ValidationErrorFormGroupComponent
|
20 %
(1/5)
|
|
src/app/shared/components/validation-header/validation-header.component.ts
|
component
|
ValidationHeaderComponent
|
33 %
(4/12)
|
|
src/app/shared/pipes/array-reverse/reverse.pipe.ts
|
pipe
|
ReversePipe
|
0 %
(0/1)
|
|
src/app/shared/pipes/case-status-goto/case.status.goto.ts
|
pipe
|
CaseStatusGoto
|
0 %
(0/1)
|
|
src/app/shared/services/documentStore/document-store.service.ts
|
injectable
|
DocumentStoreService
|
0 %
(0/7)
|
|
src/app/shared/services/forms.service.ts
|
injectable
|
FormsService
|
33 %
(2/6)
|
|
src/app/shared/services/object.service.ts
|
injectable
|
ObjectService
|
50 %
(1/2)
|
|
src/app/shared/services/validation.service.ts
|
injectable
|
ValidationService
|
77 %
(7/9)
|
|
src/environments/environment.prod.ts
|
variable
|
environment
|
0 %
(0/1)
|
|
src/environments/environment.ts
|
variable
|
environment
|
0 %
(0/1)
|
|
src/sonar/index.ts
|
class
|
Bob
|
0 %
(0/1)
|


Press Releases
- 28 September 2010 - Version 2.1.10 has been released.
The focus of this release is stability.
- 24 May 2010 - Version 2.1.9 has been released.
The focus of this release is stability.
The focus of this release is stability.
The focus of this release is stability.


Salmon Cookies Hourly Cookie Sales By Store
Add A New Cookie Store
Store name
Minimum Customers
Maximum Customers
Average Cookies Per Hour
Add a Store


---
layout: post
title: Post Meeting Update
categories:
- Meetings
tags: []
status: publish
type: post
published: true
meta:
_edit_last: '1'
dsq_thread_id: ''
---
Here are the links to the source code from the last Ottawa Android meeting
- Intro to Intents by Marc Meszaros can be found on bitbucket
- Hello Preferences by Chris Saunders can be found on github
Some other things that were mentioned at the meeting that people would be interested in seeing include:
- Presentation on Synchronization
- Handling screen transitions and how to change them
- Interacting with SQLite Databases
- Using Content providers
- Working with images
- File I/O
- Text-to-Speech (Android 1.6 and up)
- Handling touch input


(defmethod find-schema-for-id ((table schema-table) id &key (errorp t)) (or (gethash id (schema-table-by-id table)) (and errorp (error "Can't find schema with id ~D in ~S." id table))))


3 whooping cough cases confirmed at Tualatin High School
TUALATIN, Ore. (AP) - District officials say three Tualatin High School students were recently diagnosed with whooping cough.
Those cases add to one at Northeast Portland’s Grant High School, where a student was diagnosed with the illness earlier this week.
Washington County has seen 36 confirmed or suspected cases of the illness so far this year, county health department spokeswoman Wendy Gordon told The Oregonian/OregonLive.
Whooping cough, or pertussis, causes severe, violent coughing and spreads easily in groups.
Other signs include cold-like symptoms like a runny nose but usually no fever.
There is a vaccine for pertussis, but the health department said it wears off over time.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Description: Get the combined text contents of each element in the set of matched elements, including their descendants.
Unlike the .html()
method, .text()
can be used in both XML and HTML documents. The result of the .text()
method is a string containing the combined text of all matched elements. (Due to variations in the HTML parsers in different browsers, the text returned may vary in newlines and other white space.) Consider the following HTML:

Demonstration Box

list item 1

list item 2

The code $('div.demo-container').text()
would produce the following result:
Demonstration Box list item 1 list item 2
The .text()
method cannot be used on form inputs or scripts. To set or get the text value of input
or textarea
elements, use the .val()
method. To get the value of a script element, use the .html()
method.
As of jQuery 1.4, the .text()
method returns the value of text and CDATA nodes as well as element nodes.
<!DOCTYPE html>

Test Paragraph.

Description: Set the content of each element in the set of matched elements to the specified text.
textString: String A string of text to set as the content of each matched element.
function(index, text): Function() A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments.
Unlike the .html()
method, .text()
can be used in both XML and HTML documents.
We need to be aware that this method escapes the string provided as necessary so that it will render correctly in HTML. To do so, it calls the DOM method .createTextNode()
, which replaces special characters with their HTML entity equivalents (such as <
for <
). Consider the following HTML:

Demonstration Box

list item 1

list item 2

The code $('div.demo-container').text('
This is a test.
');
will produce the following DOM output:

This is a test.

It will appear on a rendered page as though the tags were exposed, like this:

This is a test

The .text()
method cannot be used on input elements. For input field text, use the .val() method.
As of jQuery 1.4, the .text()
method allows us to set the text content by passing in a function.
$('ul li').text(function(index) {
return 'item number ' + (index + 1);
});
Given an unordered list with three

elements, this example will produce the following DOM output:

item number 1

item number 2

item number 3

<!DOCTYPE html>

Test Paragraph.


This is a Salesforce API interface build using JSForce and Electron. It allows basic interactions with Salesforce.


- Settings
- Credentials
- SAML Keys
- Roles
-
Mappers
Protocol mappers perform transformation on tokens and documents. They an do things like map user data into protocol claims, or just transform any requests going between the client and auth server.
-
Scope
Scope mappings allow you to restrict which user role mappings are included within the access token requested by the client.
- Revocation
-
Sessions
View active sessions for this client. Allows you to see which users are active and when they logged in.
- Clustering
-
Installation
Helper utility for generating various client adapter configuration formats which you can download or cut and paste to configure your clients.


---
layout: default
title: The Emerson Collective's Investments
---
The Emerson Collective's Investments
{% assign investments = site.data.investments %}
{% assign investments = investments | sort:"Name" %}
{% for investment in investments %}
- {{ investment.Name }} ({{ investment.Date }}, {{ investment.Notes }})
{% endfor %}


The Input.Keydown procedure allows a program to read which keys are currently being pressed. This procedure is different from getch in that it allows a program to detect when a user presses and releases a button. As such, it is not to be used in conjunction with getch.
The procedure can be used in games where an action takes place while a key is depressed.
Example
Determine if the T key is pressed. Note that we check for the lower case letter.
var chars : array char of boolean
Input.KeyDown (chars)
if chars ('t') then
put "The T key is pressed"
end if
Details
The array returned is a list of all the characters. A key is currently pressed if the array element with the corresponding character is true. For example, the a key is pressed is chars ('a') is true. Note that each key is individually represented, so if the user has pressed Shift+a to get a 'A', then Input.KeyDown would register Shift and 'a' as pressed, but not 'A'.
A full list of all the possible characters that can be set with Input.KeyDown can be found in the Key Codes appendix.
Details
The array returned is a list of all the characters. A key is currently pressed if the array element with the corresponding character is true. For example, the a key is pressed is chars ('a') is true. Note that each key is individually represented, so if the user has pressed Shift+a to get a 'A', then Input.KeyDown would register Shift and 'a' as pressed, but not 'A'.
Details
The number of keys that can be pressed simultaneously is hardware dependent. Most keyboards can detect a minimum of two keys + Shift + Control + Alt. This means that if you are designing a two player game to be played at a single keyboard and you wish to make certain that players cannot hog the keyboard by holding down keys, you should not use more than 6 different keys and three of them should be the Shift, Control and Alt keys.
Example
The program reads the keyboard and displays a message while the arrow keys are pressed. It can detect up to all four arrow keys pressed at once.
var chars : array char of boolean
loop
Input.KeyDown (chars)
locate (1, 1)
if chars (KEY_UP_ARROW) then
put "Up Arrow Pressed " ..
else
put " " ..
end if
if chars (KEY_RIGHT_ARROW) then
put "Right Arrow Pressed " ..
else
put " " ..
end if
if chars (KEY_LEFT_ARROW) then
put "Left Arrow Pressed " ..
else
put " " ..
end if
if chars (KEY_DOWN_ARROW) then
put "Down Arrow Pressed " ..
else
put " " ..
end if
end loop
Example
Another example is available that checks for all possible keys.
Status
Exported qualified.
This means that you can only call the function by calling Input.KeyDown, not by calling KeyDown.


Bill Gates and proposed him to solve the several disputes between their respective companies. The deal included the end of all patent lawsuits, a promise to keep releasing Mac versions of Microsoft Office for five years in exchange of making Internet Explorer the default Web browser on the Mac, and a $150 million investment in Apple from Microsoft, in the form of non-voting shares.
When Steve Jobs unveiled the deal in August at Macworld Boston 1997, the Apple fans in the room welcomed the announcements with screams of reprehension. They were especially startled when Bill Gates’ face appeared on the huge screen of the room, curiously reminiscent of the 1984 ad against IBM. After all, Steve himself had often called Microsoft “the IBM of the 1990s.”
It was during that same keynote that Steve Jobs hinted at the new marketing strategy for Apple. He


You've just created a simple Play Framework that uses Slick and a Sqlite database.
hopefully this template will help creating projects that use slick or sqlite
Once the application has been compiled and run, the application can be accessed at: http://localhost:9000
the application is a simple blog app that requires you to login to add blog updates
So it shows authentication, query and update of the sqlite db using slick


Navbar
Home
(current)
Register
(current)
Register
(current)
Login
(current)
Register
(current)
Login or Signup
Login
Please, enter your email and password for login.
E-mail
Password
Login
Sign Up
Please, enter your email, password and password confirmation for sign up.
E-mail
Password
Confirm password
Continue


Before Change
// build overlap reference
reference = Timeline(uri=current_file["uri"])
turns = current_file["annotation"]
for track1, track2 in turns.co_iter(turns):
if track1 == track2:
continue
reference.add(track1[0] & track2[0])
reference = reference.support().to_annotation()
uem = get_annotated(current_file)
p = precision(reference, hypothesis, uem=uem)
After Change
precision = DetectionPrecision()
recall = DetectionRecall()
if "overlap_reference" in current_file:
overlap_reference = current_file["overlap_reference"]
else:
reference = current_file["annotation"]
overlap_reference = self.to_overlap(reference)
current_file["overlap_reference"] = overlap_reference
uem = get_annotated(current_file)
p = precision(overlap_reference, hypothesis, uem=uem)
r = recall(overlap_reference, hypothesis, uem=uem)


{% extends "base.html" %} {% block title %}Newsletter{% endblock %} {% block content %}
Your email is deleted entirely from the database, and that's totally okay!


{% extends "base_foundation.html" %} {% load i18n %} {% block content %}
{% blocktrans %} Thanks! Your application is being reviewed, and we'll follow up a response from the board after our next monthly meeting. {% endblocktrans %}


Welcome to the Cookie Confectionary!
Please pick a flavor
Chocolate Cookie
Lemon Cookie
Sugar Cookie


My Github Portfolio Website
My Projects
TaskMan
CodeIgniter-PHP-Blog
PuMPHP
Click Anywhere and See the Magic!!


Introduction
TestControl is a light weight test automation framework for Windows Native, WinForm and WPF applications.
Features
- A light weight framework - just few assembly DLLs required to get started
- Spy Tool which helps to recognize the objects on the screen
- Provides solid mechanism for identifying screen elements consistently in more reliable and in a resolution agnostic way
- Screen element locators are prone to developer changes(no more xpath!)
- In-Built smart wait logic for handling real time use cases
- Supports Windows Native, WinForm and WPF applications
- Supports Embedded Chrome Browser (CEFSharp) thru Selenium Extension
- Write your automation with your own choice of test runners like MSTest, NUnit, Cucumber SpecFlow or using Fitnesse
- It is customizable with by writing your own plugin extenders for example like generate your own test scripts in any language or detail inspection of a UI element on the screen in a customized way
- No license needed because its an OpenSource
Installation
Download binaries and unzip to your favourite location or relative to your Visual Studio project
Note: Nuget distribution is not yet available at this time but eventually.
Why TestControl?
Well, the framework is being developed out of many hurdles and shortcomings with many other frameworks and tools available both open source and commerically. Most of the time, locating the control on the screen is the key for any successful automation but it has been a challenge. So TestControl is trying to solve two main issues here: provide a precise way to locate a control on the screen and secondly be resilent to beat the failure! Lastly, CEF browser automation which you will see in another section as how to automate using TestControl.
Getting started
TestConntrol is a library is meant for people who have some .net developement skills because it does not offer record and replay mechanism. However it is not difficult for someone to work with very basic coding skills on C# or VB. This framework written up around MS UIAutomation so highly recommended if any third party controls implement UIAutomation patterns in order to fully take control on accessing elements. There are cases where paint events are drawing things on the screen and its simple imposible to capture those or to automate so that something you need to be aware of and will be discussed in advanced sections as how to overcome those.
Write a simple test
ApplicationUnderTest calcApp = new ApplicationUnderTest(@"C:\Windows\System32\", "calc.exe");
//build your locators
var repo = new ControlLocatorDefRepo("calcapp");
repo.Wait(500); //
repo.FindByName("Calculator", true); // find calculator by its name
//now use locators to find
var w = new Window();
w.SystemUnderTestFromRepo("calcapp");
Assert.AreEqual("Calculator", w.Caption);
So the above example is using repository concept if you would like to keep key map to store your locators for later use
Locators
Standard Controls
CEF Browser Control
CEF is a real chrome browser embedded into a window control. CEF control is becoming popular as organisations are moving towards web offerings and discontiue developements on desktops. As a result, desktop applications are embedding web applications inside that makes automation complex because you need to have a seamless flow of automation between window controls on the applicatons and CEF control as a browser in order to manipulate its elements. Rather reinvinting the wheel, TestControl uses Selenium drivers to work with but with modified version of chromedriver that can work along with TestControl. So the modified version chromedriver.exe is named as TCChromeDriver.exe for our use.
// set your application under test
IApplicationUnderTest app = new<EMAIL_ADDRESS>"ceftest.exe"); //ceftest.exe is a winform cotinaing cef control
//application main form has only a cef control browser control
//and your mainform window caption is set to "Google"
app.RunOnce(); //now launch the application
if (app.WaitForCaptionIfExists("Google", 20)) // wait for window appears with 20 retries
{
Assert.IsTrue(true);
}
else Assert.Fail("unable to get window caption");
//locate the control as like any other .NET Control
WebBrowserControl aBrowser = new WebBrowserControl("chrome"); //browser type to chrome
aBrowser.SystemUnderTest(new ControlLocatorDef<FindControl>(
() => new FindByAutomationId("Form1", true), //your main form id
() => new FindByName("Chrome Legacy Window") //the spy shows the name as Chrome Legacy Window
));
Assert.IsTrue(aBrowser.IsVisible); //make sure your cef control is visible
//** make sure, for this test formshow event of main form is set to load google.com into the cef browser
//now Testcontrol loads Selenium driver and switching to Selenium world
// goto an Url
var url = aBrowser.InternalDriver.GotoUrl("http://msn.com");
Assert.AreEqual("http://msn.com", url);
url = aBrowser.InternalDriver.GotoUrl("http://yahoo.com");
Assert.AreEqual("http://yahoo.com", url);
//to find an element
aBrowser.InternalDriver.GotoUrl("http://google.com");
var element = aBrowser.InternalDriver.FindChild("name:q"); // equivalent to ByName()
Assert.IsNotNull(element);
element.Text = "TDD"+ Enter;
element = aBrowser.InternalDriver.FindChild("name:q");
Assert.AreEqual("lst-ib", element.AsString("Attribute:id"));
//here is an example if you want use direct selenium way
aBrowser.GetWebDriver().Url = "http://www.littlewebhut.com/articles/html_iframe_example/";
var frame = aBrowser.GetWebDriver().FindElement(By.Id("imgbox"));
Assert.AreEqual("http://www.littlewebhut.com/images/eightball.gif", frame.GetAttribute("src"));
//switch frame
aBrowser.GetWebDriver().SwitchTo().Frame(frame);
var img = aBrowser.GetWebDriver().FindElement(By.TagName("img"));
Assert.AreEqual("http://www.littlewebhut.com/images/eightball.gif", img.GetAttribute("src"));


Espresso allows you to load and serve assets with easy.
To load a script you simply do:
script_tag 'script.js'
or via assets loader:
js 'script'
Same for stylesheets and images:
style_tag 'style.css' img_tag 'image.png'
or via assets loader:
css 'style' png 'image'
By default assets will be loaded from current folder, that's it, src
/href
will look like src="script.js"
/ href="style.css"
To have them mapped to some URL, use assets mapper.
[ contents ↑ ]
assets_map
is a method of dual meaning:
As said above, by default assets will be loaded from current folder.
To define a baseurl to load assets from, use assets_map
(or assets_url
alias) at app level:
class App < E map '/' ... end app = EApp.new do mount App assets_map :assets end app.run
Now your assets will load from '/assets' baseurl.
Example:
script_tag 'script.js' # or js 'script'
both will return


NELIA TERRAZAS
WELCOME!
I am a native Portlander born of two Chilean immigrants. Both my West Coast and Latinx culture show in my passion for good food, music, and the art of storytelling. I have long been fascinated by the human mind and the way we interact with one another. Here, you can find my latest Front End development projects, and a bit more about myself.


I am a graduate student in Computer Science at University of Texas at Dallas. In academic part, I got strong skills in Object-Oriented Programming like Java, and had good knowledge about data structure and computer algorithm.
In the extracurricular part, I am a web developer for school of management and the president of student organization called Living Water Student Fellowship. In this group, I organized bible studying every week and encouraged students to share their lives with others. That is me, not perfect but willing to work on being better :)
View My LinkedlinA simple and minimalistic clone of Airbnb, this full-stack application allows you to post Camping Services, see introductions or users' rating and comments, and do the basic CRUD operations. I used Node/Express to create the REST API, Passport.js for user authentication, EJS for template engine and MongoDB for data storage.
This Contact List Java Applicaton support users to insert, search, delete, modify contact person info. I used Java and Swing for designing GUI and developping command handlers, and also utilized Hibernate to connect and operate MySQL database.


Thank you! Your message has been received. We will contact you shortly to discuss our available services.


|
|
| InputMoveVarsRB (float x, float y, float z, float speed, RigibodyMoveType type=RigibodyMoveType.AddForce, ForceMode force=ForceMode.Force, InputReference reference=InputReference.Camera) |
| |
|
|
float | X |
| |
|
float | Z |
| |
|
float | Force = 55 |
| |
|
RigibodyMoveType | Type = RigibodyMoveType.AddForce |
| |
|
ForceMode | ForceMode = ForceMode.Force |
| |
|
InputReference | Reference = InputReference.Camera |
| |
The documentation for this class was generated from the following file:
- C:/Users/epiph/Documents/Character Action/Assets/Helpers/Rigidbody/States/InputMoveRB.cs


{% extends 'base.html' %} {% load static from staticfiles %} {% load crispy_forms_tags %} {% load define_action %} {% block title %}Annotation Manager{% endblock %} {% block content %}
Annotation choices are listed below. Create a new annotation by entering a name below and hitting 'Create Annotation'. Remove an annotation by hitting 'Delete Annotation'. The available classes in each annotation can be viewed in the 'Annotation classes' panel.


Home
Squad
Archives
You'll never
walk alone.
Liverpool FC Team Info
Steven Gerrard
Raheem Sterling
Glen Johnson
We are Liverpool
History Timeline
1892
1892
1893
1894
1896
...


Here is this year's game video! Please feel free to take a look to better understand our goal for this season.


SweetXml
SweetXml
is a thin wrapper around :xmerl
. It allows you to convert a
string or xmlElement record as defined in :xmerl
to an elixir value such
as map
, list
, char_list
, or any combination of these.
For normal sized documents, SweetXml
primarily exposes 3 functions
SweetXml.xpath/2
- return a value based on the xpath expressionSweetXml.xpath/3
- similar to above but allowing nesting of mappingSweetXml.xmap/2
- return a map with keywords mapped to values returned from xpath
For something larger, SweetXml
mainly exposes 1 function
SweetXml.stream_tags/3
- stream a given tag or a list of tags, and optionally "discard" some dom elements in order to free memory during streaming for big files which cannot fit entirely in memory
Examples
Simple Xpath
iex> import SweetXml
iex> doc = "
Some linked title
"
iex> doc |> xpath(~x"//a/text()")
'Some linked title'
Nested Mapping
iex> import SweetXml
iex> doc = "
Message

One

Two

"
iex> doc |> xpath(~x"//header", message: ~x"./p/text()", a_in_li: ~x".//li/a/text()"l)
%{a_in_li: ['Two'], message: 'Message'}
Streaming
iex> import SweetXml
iex> doc = ["

l1

l2", "

l3

"]
iex> SweetXml.stream_tags(doc, :li)
...> |> Stream.map(fn {:li, doc} ->
...> doc |> SweetXml.xpath(~x"./text()")
...> end)
...> |> Enum.to_list
['l1', 'l2', 'l3']
For more examples please see help for each individual functions
The ~x Sigil
Notice in the above examples, we used the expression ~x"//a/text()"
to
define the path. The reason is it allows us to more precisely specify what
is being returned.
~x"//some/path"
without any modifiers,
xpath/2
will return the value of the entity if the entity is of typexmlText
,xmlAttribute
,xmlPI
,xmlComment
as defined in:xmerl
~x"//some/path"e
e
stands for (e)ntity. This forcesxpath/2
to return the entity with which you can further chain yourxpath/2
call~x"//some/path"l
'l' stands for (l)ist. This forces
xpath/2
to return a list. Withoutl
,xpath/2
will only return the first element of the match~x"//some/path"el
- mix of the above
Notice also in the examples section, we always import SweetXml first. This
makes x_sigil
available in the current scope. Without it, instead of using
~x
, you can do the following
iex> doc = "
Some linked title
"
iex> doc |> SweetXml.xpath(%SweetXpath{path: '//a/text()', is_value: true, is_list: false})
'Some linked title'
Note the use of char_list in the path definition.
Summary↑
Functions
doc
can be
- a byte list (iodata)
- a binary
- any enumerable of binaries (for instance
File.stream!/3
result)
options
are xmerl
options described here http://www.erlang.org/doc/man/xmerl_scan.html,
see the erlang tutorial for usage.
When doc
is an enumerable, the :cont_fun
option cannot be given.
Return an xmlElement
record
sigil_x/2
simply returns a SweetXpath
struct, with modifiers converted to
boolean fields
iex> SweetXml.sigil_x("//some/path", 'e')
%SweetXpath{path: '//some/path', is_value: false, is_list: false}
or you can simply import and use the ~x
expression
iex> import SweetXml
iex> ~x"//some/path"e
%SweetXpath{path: '//some/path', is_value: false, is_list: false}
Valid modifiers are e
and l
. Below is the full explanation
~x"//some/path"
without any modifiers,
xpath/2
will return the value of the entity if the entity is of typexmlText
,xmlAttribute
,xmlPI
,xmlComment
as defined in:xmerl
~x"//some/path"e
e
stands for (e)ntity. This forcesxpath/2
to return the entity with which you can further chain yourxpath/2
call~x"//some/path"l
'l' stands for (l)ist. This forces
xpath/2
to return a list. Withoutl
,xpath/2
will only return the first element of the match~x"//some/path"el
- mix of the above
Create an element stream from a xml doc
.
This is a lower level API compared to SweetXml.stream_tags
. You can use
the options_callback
argument to get fine control of what data to be streamed.
doc
is an enumerable, data will be pulled during the result stream enumeration. e.g.File.stream!("some_file.xml")
options_callback
is an anonymous functionfn emit -> xmerl_opts
use it to define your :xmerl callbacks and put data into the stream usingemit.(elem)
in the callbacks.
For example, here you define a stream of all xmlElement
:
iex> import Record
iex> doc = ["
Som", "e linked titleother
"]
iex> SweetXml.stream(doc, fn emit ->
...> [
...> hook_fun: fn
...> entity, xstate when is_record(entity, :xmlElement)->
...> emit.(entity)
...> {entity, xstate}
...> entity, xstate ->
...> {entity,xstate}
...> end
...> ]
...> end) |> Enum.count
3
Most common usage of streaming: stream a given tag or a list of tags, and optionally "discard" some dom elements in order to free memory during streaming for big files which cannot fit entirely in memory.
Note that each matched tag produces it's own tree. If a given tag appears in the discarded options, it is ignored.
doc
is an enumerable, data will be pulled during the result stream enumeration. e.g.File.stream!("some_file.xml")
tags
is an atom or a list of atoms you want to extract. Each stream element will be{:tagname, xmlelem}
. e.g. :li, :headeroptions[:discard]
is the list of tag which will be discarded: not added to its parent DOM.
Examples:
iex> import SweetXml
iex> doc = ["

l1

l2", "

l3

"]
iex> SweetXml.stream_tags(doc, :li, discard: [:li])
...> |> Stream.map(fn {:li, doc} -> doc |> SweetXml.xpath(~x"./text()") end)
...> |> Enum.to_list
['l1', 'l2', 'l3']
iex> SweetXml.stream_tags(doc, [:ul, :li])
...> |> Stream.map(fn {_, doc} -> doc |> SweetXml.xpath(~x"./text()") end)
...> |> Enum.to_list
['l1', 'l2', 'l3', nil]
Becareful if you set options[:discard]
. If any of the discarded tags is nested
inside a kept tag, you will not be able to access them.
Examples:
iex> import SweetXml
iex> doc = ["", "<title>XML</title", "><title>Nested</title>"]
iex> SweetXml.stream_tags(doc, :header)
...> |> Stream.map(fn {_, doc} -> SweetXml.xpath(doc, ~x".//title/text()") end)
...> |> Enum.to_list
['Nested', 'XML']
iex> SweetXml.stream_tags(doc, :header, discard: [:title])
...> |> Stream.map(fn {_, doc} -> SweetXml.xpath(doc, ~x"./title/text()") end)
...> |> Enum.to_list
[nil, nil]
xmap
returns a mapping with each value being the result of xpath
Just as xpath
, you can nest the mapping structure. Please see xpath
for
more detail.
Examples
Simple
iex> import SweetXml
iex> doc = "
Some linked title
"
iex> doc |> xmap(a: ~x"//a/text()")
%{a: 'Some linked title'}
With optional mapping
iex> import SweetXml
iex> doc = "
Message

One

Two

"
iex> doc |> xmap(message: ~x"//p/text()", a_in_li: ~x".//li/a/text()"l)
%{a_in_li: ['Two'], message: 'Message'}
With optional mapping and nesting
iex> import SweetXml
iex> doc = "
Message

One

Two

"
iex> doc
...> |> xmap(
...> message: ~x"//p/text()",
...> ul: [
...> ~x"//ul",
...> a: ~x"./li/a/text()"
...> ]
...> )
%{message: 'Message', ul: %{a: 'Two'}}
xpath
allows you to query an xml document with xpath.
The second argument to xpath is a SweetXpath
struct. The optional third
argument is a keyword list, such that the value of each keyword is also
either a SweetXpath
or a list with head being a SweetXpath
and tail being
another keyword list exactly like before. Please see examples below for better
understanding.
Examples
Simple
iex> import SweetXml
iex> doc = "
Some linked title
"
iex> doc |> xpath(~x"//a/text()")
'Some linked title'
With optional mapping
iex> import SweetXml
iex> doc = "
Message

One

Two

"
iex> doc |> xpath(~x"//header", message: ~x"./p/text()", a_in_li: ~x".//li/a/text()"l)
%{a_in_li: ['Two'], message: 'Message'}
With optional mapping and nesting
iex> import SweetXml
iex> doc = "
Message

One

Two

"
iex> doc
...> |> xpath(
...> ~x"//header",
...> ul: [
...> ~x"./ul",
...> a: ~x"./li/a/text()"
...> ]
...> )
%{ul: %{a: 'Two'}}


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
November 27, 2002
Up Jewfish Creek without a yarmulka
South Florida Sun-Sentinel | Submitted by: Dirty Sammy
"Monroe County commissioners voted unanimously last week against re-naming
the creek, which has been known as Jewfish Creek for since the early 1900s, at
least. In fact, postal records show that the town known now as Key Largo was
called Jewfish until 1921."
|
|
Read article...
|
|
World War I table leg explodes
CNN | Submitted by: max
"A Montenegrin family thought a World War II artillery shell was the ideal
replacement for a broken table leg, until it exploded, injuring eight people
as they were about to eat a meal."
|
|
Read article...
|
|
Evil-looking, Soviet red star returns to Russia
Newsday | Submitted by: Honkey Kong
"President Vladimir Putin agreed Tuesday to reinstate the Soviet-era red
star as the Russian military's official emblem, in the latest reincarnation of
Communist symbols that has sparked fears of a return to the repressive past."
"No one is left out: Communists get their anthem, the conservatives have a
double-headed eagle and democrats their tricolor flag. It makes one wonder
what kind of national ideology such a state has."
|
|
Read article...
|
|
January due date for cloned human baby
Canadian Broadcasting | Submitted by: slackers, kade
"The world's first cloned baby will be born at the beginning of January, a
controversial Italian fertility expert announced Tuesday. Gynecologist
Severino Antinori told reporters the pregnancy is in its 33rd week. The
"absolutely healthy" fetus weighs 2.7 kilograms and has a "more than 90 per
cent chance" of being born, he said."
|
|
Read article... and
This article...
|
|
Half of Americans would kill Bin Laden
Fox News | Submitted by: sam thompson
"In a recent poll conducted for FOX News by the research firm Opinion
Dynamics, respondents were asked if, in the unlikely event the opportunity
presented itself, they would personally kill Usama. Less than half (45 percent)
said "yes." Why is this poll being taken in the first place?
|
|
Read article...
|
|
Aussie latest email sex celebrity
News Corporation | Submitted by: danny z
"An unnamed Canberra woman has become Australia's latest email sex
celebrity. [Are there others?] The woman, who lives in a flat in the
Canberra suburb of Kingston, upset her neighbours by having noisy sex.
One of them wrote a letter of complaint to neighbours, which has been
forwarded, along with the woman's reply, around the world by email."
|
|
Read article...
|
|
Another outbreak aboard Disney ships
CNN | Submitted by: Alaska Freegold
"Disney Cruise Lines said Tuesday at least 85 people are reporting flulike
symptoms four days into a seven-day cruise to the western Caribbean aboard
the cruise ship Magic. Disney spokesman Mark Jaronski said the former head
of the Centers for Disease Control and Prevention vessel sanitation program,
Don Turner, has been hired and flown to the Cayman Islands to join the ship
Tuesday. Disney also dispatched two Walt Disney World microbiologists to
help oversee steps to sanitize the ship." Question, why exactly does Disney
need its own microbiologists?
|
|
Read article...
|
|
Inmates stage fecoprotest
Independent Online | Submitted by: Alaska Freegold
"About 100 inmates at Dublin's Mountjoy Jail were locked in their cells
until further notice on Monday after dumping the contents of their toilet
buckets onto guards in a protest over tightened security measures.
The prisoners on an upper-floor wing emptied the buckets over a balcony after
being freed for breakfast."
|
|
Read article...
|
|
No Christmas for Canada
Independent Online | Submitted by: Alaska Freegold
Things are sure rough in Canada: "Christmas is becoming an endangered
word in parts of Canada in a rash of politically correct behaviour, such
as renaming a Christmas tree a "holiday tree", that even non-Christians
dismiss as silly. "To take a generic term, slap it on a symbol that really
only has significance to one religion... [though oddly it is not in the
Bible, nor is Christmas for that matter] and then say we're being
multicultural does not really fit," said Anita Bromberg of the Jewish group
B'nai Brith Canada. "Whatever you call it, it's still a Christmas tree."
|
|
Read article...
|
|
She should have whored herself instead
Dayton Daily News | Submitted by: Idle Hands
It's like an "I Love Lucy" episode on crack: "Rather than tell her husband
she had lost the rent money, Pandora J. Zan decided to turn to armed
robbery... 'She had the family’s rent [$900] in an envelope. She cleaned her
purse out. The next thing you know, it’s gone. She panicked,' attorney
Anthony Lehman said after the hearing Monday... Zan pleaded guilty to robbing
Yesterday’s Clothes of $25 on Sept. 4. She was caught after returning twice
to the scene to retrieve a cell phone and keys she had left behind
while trying to escape."
|
|
Read article...
|
|
Spy Children of Death in WWI
Pravda | Submitted by: anonymous
Fascinating article, not the usual UFO filler from Pravda:
"Crowds of homeless boys and girls gathered at railway stations, marketplaces,
and especially around Russian military units back in 1914. There were a lot of
those ragged little children everywhere. There was nothing surprising about
the situation, since the war was just beginning. However, the sneaky abilities
of these little creatures were really something special."
|
|
Read article...
|
|
Feral parrot heckles churchgoers
Sky News | Submitted by: anonymous
"A foul mouthed parrot left church-goers stunned, by bombarding them with
wolf-whistles and insults. Parishioners complained that they are wolf-whistled
at or insulted when they walk past their local church." The pastor denies
all foul mouthedness.
|
|
Read article...
|
|
Fire ants beware: Brazilian decapitating flies
St. Petersburg Times | Submitted by: Alter Ego
"Being stung by fire ants is one of Florida's initiation rites. You come here,
you get stung. And once you have experienced those itchy welts that turn into
nasty pustules, you make sure you never again stand on a dry, sandy patch of
earth for more than three seconds without checking your ankles."
A story about using exotic flies to fight the fire ants.
|
|
Read article...
|
|
Demon Rum vs. Religion
Trinidad Express | Submitted by: Alter Ego
"He described the advertisement as a 'shameless act designed to send a
subliminal message that the Hindu God Krishna endorses alcoholic products'.
Maharaj called on the company to withdraw the advertisement and demanded an
apology for what he described as an 'act of sacrilege.'"
|
|
Read article...
|
|
Town bar the only thing worth living for
The Sunday Mail | Submitted by: meatload
"Some staggering statistics about the level of drinking at the community
of Nguiu were raised at the Northern Territory Liquor Commission yesterday,
including the fact that 400 drinkers got through 90 kegs of beer each week.
Constable Gary Smallridge... said there had been a steady four to seven
attempted suicides every week. "A large number of the attempted suicides
occurred immediately after the club's closure."
|
|
Read article...
|
|
Mad scientists to create a Mouseman!
New York Times | Submitted by: Son of Benway
"Dr. Irving L. Weissman, an expert on stem cells at Stanford University,
said that making mice with human cells could be "an enormously important
experiment," but if conducted carelessly could lead to outcomes that are
"too horrible to contemplate." He gave as an extreme example the possibility
that a mouse making human sperm might accidentally be allowed to mate with a
mouse that had made its eggs from human cells."
|
|
Read article...
|
|
Jedi finds droids he was looking for
Centre Daily | Submitted by: Rosie the Hut
"Daniel Opdenhoff, a diagnosed paranoid schizophrenic, allegedly told
investigators when he was found in New York nearly a week later that he
was attacked by "droids" and fought back. Police were able to track
Opdenhoff's whereabouts after he allegedly used his parents' bank and
credit cards in State College, Philadelphia and New York. "He denied
hurting the droids, although he did see them dead," police wrote
in a criminal complaint."
|
|
Read article...
|
|
Mother nails girl's foot to floor
Wire Services | Submitted by: Poots Brownhole
"Cambodian mother took drastic measures to stop her party-loving 13 year
old daughter from going at out night: she nailed her foot to the floor,
officials said on Wednesday... her mother drove a two-inch nail through
the top of her right foot, pinning it to the floorboards."
|
|
Read article...
|
|
French cops torch refugee camp
Expatica | Submitted by: Son of Benway
"According to statements made by various humanitarian aid workers and
refugees present when the fire started, police moved in to arrest a number
of the asylum seekers before dousing the blockhouse with petrol and
setting it alight. "Refugees told us that after detaining a dozen of their
companions police poured petrol into the blockhouse and set it on fire,"
said Rene Biguet of the organisation C-sur."
|
|
Read article...
|
|
Tanya Harding jonesing for some kickass
ESPN | Submitted by: star28
"After giving Paula Jones a good pummeling on the Fox network show
Celebrity Boxing last March, Harding said she's ready to get
into the ring for real... "It is my goal to be a future, undisputed
bantamweight champion. My proven athletic ability and competitive
nature will help this dream become a reality."
|
|
Read article...
|
|
Lawsuit and Jesus turns porn store into Bible store
News Corporation | Submitted by: Jesus Jacks Joseph
Sure, the Bible has some naughty bits in it, but it just doesn't have the
same impact as a good old double penetration scene. "Braithwaite, with tears
pooling in his eyes, said God persuaded him to close the shop, burn $US10,000
worth of sex toys and open the bookstore in this mountain community made up
largely of conservative Christians."
|
|
Read article...
|
|
Face transplants coming soon
BBC | Submitted by: Alaska Freegold
"A leading plastic surgeon is calling for a debate about whether face
transplants should take place. Peter Butler said surgical techniques would
allow the procedure to take place within the next six to nine months.
"While people would, in general, accept a face transplant if they required
it, they would actually not be willing to donate."
|
|
Read article...
|
|
Woman tries to euthanize husband
The Commercial Appeal | Submitted by: Poots Brownhole
"A nurse assistant who told her former husband she was giving him a flu
shot instead injected the man with a solution used to euthanize animals, a
detective said Tuesday... A drug audit at a veterinarian's office where she
worked previously showed some euthasol was missing." D'oh.
|
|
Read article...
|
|
Lick the Arabic World
Philadelphia Inquirer | Submitted by: Reverend Bustanut
"I just could not bring myself to use it," said John Dunn, a native New
Yorker and publisher of the weekly Mekeel's and Stamps Magazine for
collectors. "It just cut too close to the bone for me. If Israelis had
knocked down the World Trade Center, I would not have been able to use the
Hanukkah stamp."
|
|
Read article...
|
|
Loony ex-cop hijacks second airplane
ABC News | Submitted by: billcolector
If at first you don't succeed, hijack again. This lunatic hijacked a plane
over Switzerland, after hijacking a French plane three years ago. They let him
go because he was a lunatic. The best part is the quote from his
mother: "Oh God, he's done it again. I've been anxious for hours because he
didn't come home at lunchtime."
|
|
Read article...
|
|
|
|
|


Qute Utility for Tracking Errors
The goal of Qute is to provide APIs and tools to allow user-customized interaction with legacy web services, for example a command-line tool to access Bugzilla or a Vim interface to a Wiki.
The most interesting thing we've got so far is our source repository.
Current Status
Qute is currently made up of two Ruby libraries. qute.rb provides an API for interacting with web services, making it easy to write programs that fill out and submit forms, collect information from HTML tables, and follow hyperlinks. qutecmd.rb adds features useful for command-line tools, such as formatting ASCII result tables and filling out web forms at a command prompt. Qute was developed in-house at HP, which has generously released it under the BSD license.
Qute has proven to be useful and robust as the foundation for tools that interact with two very different bug tracking web applications. However, these are proprietary, would not be generally useful outside the companies where they were developed, and will not be released. We are planning to use the Qute modules to develop front-end tools for bugzilla.
As of late September 2004, we're working to release and document the latest versions of the Qute modules.


All Classes
CodeBuilder
DelayFunction
DesktopApplication1
DesktopApplication1View
Element
Elements
Executable
Instruction
InstructionData
InstructionGroup
InstructionSet
Loop
Main


Andrew Kim is a full stack developer and a recent Dev BootCamp graduate. He made the transition from dentistry when he decided to choose a career that he is truly passionate about.
Andrew was born in Flushing, New York but was raised in South Korea until college. He graduated from Syracuse University with a major in biology and he obtained his masters in Biomedical Sciences from the University of Medicine and Dentistry in NJ.
Some of his hobbies are coding, snowboarding, and playing basketball. Most importantly, he collects Jordan shoes and loves to share the most unique ones with his friends. He is not only athletic but surprisingly very sensitive - he is a musical prodigy in piano.
WalkAbout is a mobile tour guide iOS application with narrated audio content that triggers at specified locations. Built in React Native.
Survey Code Monkey Gorilla is a simple survey style SurveyMonkey clone built on Sinatra as a learning exercise
Version control will let you save your changed data points when working in group projects of coding. It is sort of like checkpoints when you're playing games.  Also, Read More..
Arrays and hashes are both collections used to store and retrieve data. They both hold objects such as integers, floats, booleans, and strings. There are many differeces between the two. As you might have already noticed, Read More..
Ruby is an object-oriented programming language. It is based on concept of ‘object’ which are data structure containing data in the form of methods. Ruby lets us allows to add methods to an already loaded class or create our own classes where we can create custom-made methods with endless possibilities. Read More..


COMP 2021 Galaxy Wars SDL - Final Report
|
Welcome to the Final Report page for COMP2021 Galaxy Wars SDL. Navigate by the sidebar on the left.
This project is curated by:
- IYER, Arvind
- MA, Jonathan Chuan-en
|
|
Perl is a highly versatile programming language with an extensive and active user base. Mainly targeted at text-processing, simple tasks and web-based activities, Perl has capabilities to handle way more than these. Nevertheless, multimedia based programming and game development does not seem to be common among Perl programmers. With Frozen-Bubble, an arcade game from 2002 being the one of the only largely recognized game made entirely in Perl, we decided to take up this challenge of increasing the implementation of this language in the vast field of Game Development.
Being fans of the Star Wars franchise, games and programming, it only felt natural that the path to take was for us to program a game as a tribute to Star Wars. Taking hints of inspiration from popular games like Space Invaders and the more recent Geometry Wars, we decided to make a 2D space-craft shooter.
Galaxy Wars is a one-person 2D shooting game set in the futuristic intergalactic empire. The player poses as the Empire's Standard Fighter pilot, who voyages deep into an unknown realm inhabited by alien species. A swarm of alien ships make their way towards a warp hole undiscovered by the Empire forces. It is the player who could hold off to from the last line of defence...
On the enemy...
Data structure for enemy:
my $enem = {
sprite => SDLx::Sprite->new (
width => $playersize+1,
height => $playersize+1,
image=>'alien_01.png'
),
v_y => 1,
v_x => 0,
shieldOn => 0,
shield => SDLx::Sprite->new (
width => $playersize+1,
height => $playersize+1,
image=>'alien_shield_01.png'
),
};
In terms of graphics, the enemy ship has a streamlined body and greenish-blue highlights to indicate they use alien technology.
In terms of game mechanics, the enemy ship is always moving towards the bottom of the screen (where the warp hole is) at a random speed, which will increase as the game continues.
Below is the code snippet that controls the random movement of the enemy ship:
if(1 + int rand(300-5*(time-$start_time)) == 1)
{
$inst->{sprite}->y( int($inst->{sprite}->y + ( $inst->{v_y} )) );
}
Using the random function, the enemy ship's movement speed (indicated by the v_y element) will vary according to every fream per second.
On the player...
Data structure for player:
my $player = {
ship => $playersprite,
v_y => 0,
v_x => 0,
score => 0,
energy => 100,
lives => 3,
beamOn => 0
};
On the weapon...
Data structure for gun:
my $player = {
ship => $playersprite,
v_y => 0,
v_x => 0,
score => 0,
energy => 100,
lives => 3,
beamOn => 0
};
Initialization of the gun:
my $gun_num = 0;
my @guns;
my $weapon_lvl = 0;
In terms of graphics, the weapon produces gunshots that are small rectangles generated from the object creation method in the SDL::Sprite module.
In terms of game mechanics, the weapon is first initialized with a constant velocity and color. Once reached a certain score (refer to Score Calculation for details)
Besides the regular gun shot weapon, the player ship is also equipped with a pulse laser beam that can last for about 5 seconds. The weapon is activated with the b keypress and this activation will exhaust 100 energy points. Any enemy that comes in contact with the beam will be destroyed immediately.
Below is the code snippet that detects the 5 second limit:
if($player->{beamOn} && $player->{beamTime} < 120 && $player->{energy}>99){
$beam->draw_xy($app, $player->{ship}->x-28, $player->{ship}->y-620);
$player->{beamTime}++;
}
else{
if($player->{beamOn} && $player->{energy}>99){
$player->{energy}-=100;
}
$player->{beamOn} = 0;
$player->{beamTime} = 0;
}
The condition check involves three rules, namely:
(i) If the beam is activated
(ii) If the beam is activated over 120 time units
(iii) If the player ship's energy levels are sufficient, passing the minimum of 100 energy points
On every frame, the player beamTime element will increment by 1. Since the frame per second is set as 24, the beamTime element will increment roughly per second.
For movement of the player, we use a simple system where input from the arrow keys on the keyboard sets a velocity to the player's ship according to the buttons that were pressed.
On the other hand, the movement of enemy ships is made to be slightly unpredictable by adding in a random velocity factor which makes sure that the velocity keeps changing. This increases the difficulty while also making the game less predictable.
Collision between sprites was handled by implementing simple Euclidean geometry. We find the distance between the position of one object and another and this distance factor depends on the type of colliding object.
We can categorize these as:
(i) Player - Enemy
This collision triggers the explosion of the player ship. We do this by simply overlaying the picture of an explosion cloud over the position of the ship. We also reduce the number of lives of the player by 1. This is because we have limited the number of collisions the player can withstand to be 3.
(ii) Enemy - Bullet
An enemy - bullet collision triggers code that despawns both of these objects immediately. The score is increased by 10 points for a normal enemy and 50 for an armoured ship.
(iii) Enemy - Beam
Similar to enemy bullet this despawns the enemy ship however the beam is not stopped.
For killing every normal opponent (without shield), the player gets +10 points. Breaking a fortified opponent's shield awards the player +10 points as well. Killing a fortified opponent awards the player +50 points. Allowing an enemy to pass the base of the screen results in -10 points.
Difficulties and Possible Solutions
Memory Management
The most unsurmountable problem is the memory management and lagging problem in Galaxy Wars SDL. If the game is played for long periods of time, we face serious framerate issues. This has been constantly improved over the development timeframe, but is still unsatisfactory. Explicit garbage collection in Perl is not well made as it is mostly made automatic. However SDL objects do not seem to follow the automatic garbage collection and an alternative will be necessary.
Enemy AI
Enemy Artificial Intelligence is a technical difficulty we encounter. We planned on giving the enemies and AI that makes them follow the player and avoid each other in smooth paths, but we found this was too difficult to implement in the given development period.
Progressive Difficulty Accumulation
Having only one type of enemy that simply moves forward makes the game a little repetitive. One obvious iidea is to have enemies that can shoot. Having to avoid enemy damage while also trying to hit them can step up the challenge of the game drastically. There is also the other alternative of increasing speed and increasing the randomness of their motion. Similar to having power-ups an implementation of 'power-down' might also be required. A collectible that reduces speed or disallows the player from shooting for a set time of a few seconds would make the game less repetitive and more interesting.
Random Power-up Spawning
Currently the game emplyes auto-increment of weapon upgrade (as described in Idea Development). This method is easy to attain and the player satisfaction is not promoted as much. If we employ a power-up spawning, the players would need to put more effort to upgrade their weapons. The power-ups can also enable us to develop more varieties of weapons and of the ways to destroy enemies. For example, some power-ups could increase the energy points while some could decrease the number of enemy ships in the next spawn.
And More...
Galaxy Wars has a nearly infinite scope for improvements. We could add new levels, new enemies, different weapons, powerups and even player customization. Instead of simply sticking to a vertical up down movement of ships, we hope to further develop a gamefield that permits 360 degree rotation allowing the player to shoot at enemies coming from any direction. In the future, even a multiplayer or co-operative form of this game does not seem outlandish and we wish we can make this happen.
|
All in all, developing Galaxy Wars was not an easy path to follow, especially we have to pick-up a new development framework----SDL within a short period of time.
Nevertheless, creating this game has brought great satisfaction to us, and that, not only we had enjoyed the process of realizing game ideas into reality, but also fixing problems and improving our code. This course has provided ample freedom for us, students, to devise our own little projects. We hope we can work together again and achieve great things ahead.
|
|
Project created by Arvind and Jonathan. Spring 2015 @HKUST.


|
Confetti
0.1.0
A C++ particle system using Vulkan
|
A C++ particle system using Vulkan
Confetti is a Vulkan-based particle system written in C++. It is scalable, dynamic and configurable.
Confetti has the following components:
A particle system contains of a list of emitters, and lists of appearances and environments used by the emitters.
There are five different types of particles: point, streak, textured, sphere, and emitter. The basic particle has a lifetime, a color, and an initial position and velocity. The different types each add additional unique properties associated with the type. The point particle is the simplest, but the emitter particle itself emits others particles. When a particle reaches the end of its lifetime, it is reset to its initial conditions.
All particles are contained within an emitter. The characteristics of the particles being emitted and the emission itself are controlled by the emitter. An emitter has a volume from which the particles are emitted and maintains the appearance of the emitted particles. An emitter can move and be enabled and disabled.
An environment describes the characteristics of the world in which an emitter exists. The environment has parameters that affect the paths of the particles: gravity, air friction, wind (and gusts), surfaces and clip planes. Emitters can share environments or have different environments.
An emitter has a volume and particles are emitted from uniformly distributed random locations within that volume. There are eight types of volumes: point, line, rectangle, circle, sphere, box, cylinder, and cone.
Particles that move through a clip plane are immediately reset. Clip planes are part of an environment.
Particles bounce off of a surface according to its parameters. Surfaces are part of an environment.
An appearance describes various characteristics of appearance of the particles emitted by an emitter. An appearance can be shared by multiple emitters.
A builder can instantiate any of the components listed above as well as a complete particle system based on a JSON-formatted configuration.


IndexedDB is a client side storage mechanism for storing large amounts of data with support for transactions and indexing. This github project is a list of my experiments with the IndexedDB implementation in various browsers. I have also blogged about my experiments.
The API is not supported all browsers . However, unsupported browser do implement WebSQL, another (deprecated) standard for client side storage. The IndexedDB Polyfill is an implementation of the IndexedDB API on top of the WebSQL API in Javascript. Using the polyfill, you can write IndexedDB code and run them on unsupported browsers and even on mobile devices. Try running the tests on an unsupported browser.
The IndexedDB API seems verbose and I wanted to make it simpler to use. Here is an implementation of the API as a jquery plugin that makes using the API simpler. It uses the jquery friendly patterns like promises, method chaining, etc, to make the API easier to use. You can also look at the API documentation or an example app . The plugin also has tests that you can run to see if it works for you.
The Performance experiments try to identify the fastest way to perform a set of operations, in various combinations. The performance experiments test some of the most common patterns when IndexedDB is used.
I have also been helping other libraries that use IndexedDB libraries. Here are some of them


 Fix Yourself in a Clan {% csrf_token %} Upload your profile photo {% endblock %}
You are 30 seconds away from creating your own account!


A twist on the PIES terminology; I suggest a bit of SPINE for everyone.
Social Physical Intellectual Natural Emotional
Educational theories encourage the practice of involving different
learning styles and including the different cognitive pathways of
learning in and out of the classroom.
PIES - Physical, Intellectual, Emotional and Social
Suggesting that a good balance of these leads to a more holistic
individual and collective experience of learning. Layering connections,
stimulating responses of multiple intelligences and requiring an
individual to express their agency.
Having the experience of teaching at a farm-forest school and also a
remote village nestled in the mountains, there’s a truth to having a
learning and living foundation in the midst of nature. Or even exposure
through a sensitized connection.
Head on your shoulders, heart on your sleeve, hands busy tinkering and
(bare) feet on the ground.
Head watching, thinking and observing
Heart feeling, deciding, remembering
Hands trying, making, expressing
Feet exploring, running
through fields and trees, by the river, up the hill
In the grass, on the mud, over the rocks
Connected.


Facilities
Heathrow Boxing and Mixed Martial Arts Club welcomes everyone to join us. You will find great fighting spirit, unique training techniques and professional coaches. It is an opportunity to build up your strength and find a comprehensive fitness program tailored to your individual needs to focus on one or more specific skills.
We run various classes through out the week, for full details please download our PDF using the link below.
Download PDF


[Gecode] Subversive binary files
Guido Tack
tack at ps.uni-sb.de
Thu Oct 20 09:31:39 CEST 2005
Hi.
The web pages are now checked out from svn instead of CVS. One problem I found
was that the cvs2svn conversion tool I used didn't set the properties right
for binary files that were not marked as binary in our CVS.
When checking in binary files, please make sure that subversion guesses their
mime-type correctly. You can easily verify that using the svn proplist
command, it should show at least an svn:mime-type property and neither
svn:keywords nor svn:eol-style.
Cheers,
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Saarbrücken
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list


188_Gambler147.py
class Solution:
def minOperations(self, target: List[int], arr: List[int]) -> int:
# convert LCS to LIS
# first find indices in arr such that target[i] == arr[j]
# initialize an array A, append i to A
pos = {v: idx for idx, v in enumerate(target)}
A = []
for a in arr:
if a in pos:
A.append(pos[a])
# now the problem converts to longest increasing subsequence
n = len(A)
res = []
for a in A:
i = bisect.bisect_left(res, a)
if i == len(res):
# largest element, append it to the end
res.append(a)
else:
# found a smaller number in index i, could replace res[i] with it
res[i] = a
return len(target) - len(res)


1. Test that an invalid src attribute fires an error when the file fails to load. 2. Test that changing src attribute triggers load after a load fails. 3. Test that changing src does not trigger load once a file is loaded.


{% extends 'base.html' %} {% block content %}
An application that allows users to submit one minute pitches on any category. The users will submit their one minute pitches and other users will vote on them and leave comments to give their feedback on them.
Users can create account, login and create new pitches in any category.


Not connected with MQTT Server
Select color for LED #1
Select color for LED #2
Select color for LED #3


North Korea says 'window of opportunity closing' for outcome of talks with US
MOSCOW: North Korean diplomat Jo Chol-su said on Friday (Nov 8) that the window of opportunity for normalising relations with the United States was getting smaller, adding that Pyongyang expects some steps in this direction from Washington by the end of the year.
"We've given the United States quite a lot of time and we're waiting for an answer by the end of this year, of some kind of result ... But I must say that the window of opportunity closes every day," the head of the North Korean foreign ministry's North American department said.
US President Donald Trump and North Korean leader Kim Jong Un agreed in June to reopen denuclearisation talks that stalled after a failed summit in Vietnam in February. North Korean and U.S. officials met for the first time since that decision in Stockholm last month.


How to make a code contribution¶
This document outlines the process for contributing code to the Astropy project.
Already experienced with git? Contributed before? Jump right to Astropy Guidelines for git.
Pre-requisites¶
Before following the steps in this document you need:
- an account on GitHub
- a local copy of the astropy source. Instructions for doing that, including the basics you need for setting up git and GitHub, are at Try the development version.
Strongly Recommended, but not required¶
You cannot easily work on the development version of astropy in a python environment in which you also use the stable version. It can be done — but can only be done successfully if you always remember whether the development version or stable version is the active one.
Python virtual environments offer a better solution and take only a few minutes to set up. It is well worth your time.
Not sure what your first contribution should be? Take a look at the Astropy issue list and grab one labeled “easy”...but note that even your first “easy” fix is likely to take a while if you are not familiar with the Astropy source code! The developers are friendly and want you to help, so don’t be shy about asking questions on the astropy-dev mailing list.
New to git?¶
Some git resources¶
If you have never used git or have limited experience with it, take a few minutes to look at these resources:
- Interactive tutorial that runs in a browser
- Git Basics, part of a much longer git book.
In practice, you need only a handful of git commands to make contributions to Astropy. There is a more extensive list of Git resources if you want more background.
Double check your setup¶
Before going further, make sure you have set up astropy as described in Try the development version.
In a terminal window, change directory to the one containing your clone of
Astropy. Then, run git remote
; the output should look something like this:
your-github-username
astropy
If that works, also run git fetch --all
. If it runs without errors then
your installation is working and you have a complete list of all branches in
your clone, your-github-username
and astropy
.
About names in git¶
git is designed to be a distributed version control system. Each clone of
a repository is, itself, a repository. That can lead to some confusion,
especially for the branch called master
. If you list all of the branches
your clone of git knows about with git branch -a
you will see there are
three different branches called master
:
* master # this is master in your local repo
remotes/your-github-username/master # master on your fork of Astropy on GitHub
remotes/astropy/master # the official development branch of Astropy
The naming scheme used by git will also be used here. A plain branch name,
like master
means a branch in your local copy of Astropy. A branch on a
remote, like astropy
, is labeled by that remote, astropy/master
.
This duplication of names can get very confusing for maintainers when trying
to merge code contributions into the official master branch,
astropy/master
. As a result, you should never do any work in your master
branch, master
. Always work on a branch instead.
Essential git commands¶
A full git tutorial is beyond the scope of this document but this list
describes the few git
commands you are likely to encounter in contributing
to Astropy:
git fetch
gets the latest development version of Astropy, which you will use as the basis for making your changes.git branch
makes a logically separate copy of Astropy to keep track of your changes.git add
stages files you have changed or created for addition to git.git commit
adds your staged changes to the repository.git push
copies the changes you committed to GitHubgit status
to see a list of files that have been modified or created.
Note
A good graphical interface to git makes some of these steps much easier.
If something goes wrong¶
git provides a number of ways to recover from errors. If you end up making a git mistake, do not hesitate to ask for help. An additional resource that walks you through recovering from git mistakes is the git choose-your-own-adventure.
Astropy Guidelines for git¶
- Don’t use your
master
branch for anything. - Make a new branch, called a feature branch, for each separable set of changes: “one task, one branch” (ipython git workflow).
- Start that new feature branch from the most current development version of astropy (instructions are below).
- Name your branch for the purpose of the changes, for example
bugfix-for-issue-14
orrefactor-database-code
. - Make frequent commits, and always include a commit message. Each commit should represent one logical set of changes.
- Ask on the astropy-dev mailing list if you get stuck.
- Never merge changes from
astropy/master
into your feature branch. If changes in the development version require changes to our code you can Rebase, but only if asked.
In addition there are a couple of git naming conventions used in this document:
- Change the name of the remote
origin
toyour-github-username
. - Name the remote that is the primary Astropy repository
astropy
; in prior versions of this documentation it was referred to asupstream
.
Workflow¶
These, conceptually, are the steps you will follow in contributing to Astropy:
- Fetch the latest Astropy
- Make a new feature branch; you will make your changes on this branch.
- Install your branch
- Follow The editing workflow to write/edit/document/test code - make frequent, small commits.
- Add a changelog entry
- Copy your changes to GitHub
- From GitHub, Ask for your changes to be reviewed to let the Astropy maintainers know you have contributions to review.
- Revise and push as necessary in response to comments on the pull request. Pushing those changes to GitHub automatically updates the pull request.
This way of working helps to keep work well organized, with readable history. This in turn makes it easier for project maintainers (that might be you) to see what you’ve done, and why you did it.
A worked example that follows these steps for fixing an Astropy issue is at Contributing code to Astropy, a worked example.
Some additional topics related to git are in Some other things you might want to do.
Fetch the latest Astropy¶
From time to time you should fetch the development version (i.e. Astropy
astropy/master
) changes from GitHub:
git fetch astropy
This will pull down any commits you don’t have, and set the remote branches to
point to the latest commit. For example, ‘trunk’ is the branch referred to by
astropy/master
, and if there have been commits since
you last checked, astropy/master
will change after you do the fetch.
Make a new feature branch¶
Make the new branch¶
When you are ready to make some changes to the code, you should start a new branch. Branches that are for a collection of related edits are often called ‘feature branches’.
Making a new branch for each set of related changes will make it easier for someone reviewing your branch to see what you are doing.
Choose an informative name for the branch to remind yourself and the rest of us
what the changes in the branch are for. Branch names like add-ability-to-fly
or buxfix-for-issue-42
clearly describe the purpose of the branch.
Always make your branch from astropy/master
so that you are basing your
changes on the latest version of Astropy:
# Update the mirror of trunk
git fetch astropy
# Make new feature branch starting at astropy/master
git branch my-new-feature astropy/master
git checkout my-new-feature
Connect the branch to GitHub¶
At this point you have made and checked out a new branch, but git does not know it should be connected to your fork on GitHub. You need that connection for your proposed changes to be managed by the Astropy maintainers on GitHub.
To connect your local branch to GitHub, you git push this new branch up to
your GitHub repo with the --set-upstream
option:
git push --set-upstream your-github-username my-new-feature
From now on git will know that my-new-feature
is related to the
your-github-username/my-new-feature
branch in your GitHub fork of Astropy.
You will still need to git push
your changes to GitHub periodically. The
setup in this section will make that easier.
Install your branch¶
Ideally you should set up a python virtual environment just for this fix; instructions for doing to are at Python virtual environments. Doing so ensures you will not corrupt your main astropy install and makes it very easy to recover from mistakes.
Once you have activated that environment you need to install the version of Astropy you are working on. Do that with:
python setup.py develop # typically python 2.x, not python 3
or:
python3 setup.py install # python 3...
# ...though python3 may be called python3.3 or just python,
# depending on your system.
If you are using python 3 you will need to re-install after making changes to the Astropy source code. Re-installing goes much faster than the initial install because it typically does not require new compilation.
The editing workflow¶
Conceptually, you will:
- Make changes to one or more files and/or add a new file.
- Check that your changes do not break existing code.
- Add documentation to your code and, as appropriate, to the Astropy documentation.
- Ideally, also make sure your changes do not break the documentation.
- Add tests of the code you contribute.
- Commit your changes in git
- Repeat as necessary.
In more detail¶
Make some changes to one or more files. You should follow the Astropy Coding Guidelines. Each logical set of changes should be treated as one commit. For example, if you are fixing a known bug in Astropy and notice a different bug while implementing your fix, implement the fix to that new bug as a different set of changes.
Test that your changes do not lead to regressions, i.e. that your changes do not break existing code, by running the Astropy tests. You can run all of the Astropy tests from ipython with:
import astropy astropy.test()
If your change involves only a small part of Astropy, e.g. Time, you can run just those tests:
import astropy astropy.test('time')
Make sure your code includes appropriate docstrings, described at Astropy Docstring Rules. If appropriate, as when you are adding a new feature, you should update the appropriate documentation in the
docs
directory; a detailed description is in Writing Documentation.If you have sphinx installed, you can also check that the documentation builds and looks correct by running, from the
astropy
directory:python setup.py build_sphinx
The last line should just state
build succeeded
, and should not mention any warnings. (For more details, see Writing Documentation.)Add tests of your new code, if appropriate. Some changes (e.g. to documentation) do not need tests. Detailed instructions are at Testing Guidelines, but if you have no experience writing tests or with the py.test testing framework submit your changes without adding tests, but mention in the pull request that you have not written tests. An example of writing a test is in Contributing code to Astropy, a worked example.
Stage your changes using
git add
and commit them usinggit commit
. An example of doing that, based on the fix for an actual Astropy issue, is at Contributing code to Astropy, a worked example.Note
Make your git commit messages short and descriptive. If a commit fixes an issue, include, on the second or later line of the commit message, the issue number in the commit message, like this:
Closes #123
. Doing so will automatically close the issue when the pull request is accepted.Some modifications require more than one commit; if in doubt, break your changes into a few, smaller, commits rather than one large commit that does many things at once. Repeat the steps above as necessary!
Add a changelog entry¶
Add an entry to the file CHANGES.rst
briefly describing the change you
made. Include the pull request number if the change fixes an issue. An
example entry, for the changes which fixed
issue 1845, is:
- `astropy.wcs.Wcs.printwcs` will no longer warn that `cdelt` is
being ignored when none was present in the FITS file. [#1845]
If the change is a new feature, rather than an existing issue, you will not be able to put in the issue number until after you make the pull request.
Copy your changes to GitHub¶
This step is easy because of the way you created the feature branch. Just:
git push
Ask for your changes to be reviewed¶
A pull request on GitHub is a request to merge the changes you have made into another repository.
When you are ready to ask for someone to review your code and consider merging it into Astropy:
Go to the URL of your fork of Astropy, e.g.,
https://github.com/your-user-name/astropy
.Use the ‘Switch Branches’ dropdown menu to select the branch with your changes:
Click on the ‘Pull request’ button:
Enter a title for the set of changes, and some explanation of what you’ve done. If there is anything you’d like particular attention for, like a complicated change or some code you are not happy with, add the details here.
 This is still a good way to start a preliminary code review.
Revise and push as necessary¶
You may be asked to make changes in the discussion of the pull request. Make those changes in your local copy, commit them to your local repo and push them to GitHub. GitHub will automatically update your pull request.
Rebase, but only if asked¶
Sometimes the maintainers of Astropy will ask you to rebase your changes before they are merged into the main Astropy repository.
Conceptually, rebasing means taking your changes and applying them to the latest version of the development branch of the official astropy as though that was the version you had originally branched from.
Behind the scenes, git is deleting the changes and branch you made, making the changes others made to the development branch of Astropy, then re-making your branch from the development branch and applying your changes to your branch. This results in re-writing the history of commits, which is why you should do it only if asked.
It is easier to make mistakes rebasing than other areas of git, so before you start make a branch to serve as a backup copy of your work:
git branch tmp my-new-feature # make temporary branch--will be deleted later
The actual rebasing is usually easy:
git fetch astropy/master # get the latest development astropy
git rebase astropy/master my-new-feature
You are more likely to run into conflics here–places where the changes you made conflict with changes that someone else made–than anywhere else. Ask for help if you need it.
After the rebase you need to push your changes to GitHub; you will need force the push because git objects to re-writing the history of the respository after you have pushed it somewhere:
git push -f
If you run into any problems, do not hesitate to ask. A more detailed conceptual discussing of rebasing is at Rebasing on trunk.
Once your rebase is successfully pushed to GitHub you can delete the backup branch you made:
git branch -D tmp


Text Color
Class reference
Usage
Control the text color of an element using the .text-{color}
utilities.
<input class="text-purple ...">
Responsive
To control the text color of an element at a specific breakpoint, add a {screen}:
prefix to any existing text color utility. For example, use md:text-green
to apply the text-green
utility at only medium screen sizes and above.
For more information about Tailwind's responsive design features, check out the Responsive Design documentation.
Hover
To control the text color of an element on hover, add the hover:
prefix to any existing text color utility. For example, use hover:text-blue
to apply the text-blue
utility on hover.
<button class="text-blue hover:text-red ...">
Button
</button>
Hover utilities can also be combined with responsive utilities by adding the responsive {screen}:
prefix before the hover:
prefix.
<button class="... md:text-blue md:hover:text-blue-dark ...">Button</button>
Focus
To control the text color of an element on focus, add the focus:
prefix to any existing text color utility. For example, use focus:text-blue
to apply the text-blue
utility on focus.
<input class="text-black focus:text-red ...">
Focus utilities can also be combined with responsive utilities by adding the responsive {screen}:
prefix before the focus:
prefix.
<input class="... md:text-black md:focus:text-red ...">
Customizing
Text Colors
By default Tailwind makes the entire default color palette available as text colors.
You can customize your color palette by editing the colors
variable in your Tailwind config file, or customize just your text colors using the textColors
section of your Tailwind config.
Responsive and State Variants
By default, only responsive, hover and focus variants are generated for text color utilities.
You can control which variants are generated for the text color utilities by modifying the textColors
property in the modules
section of your Tailwind config file.
For example, this config will also generate variants:
Disabling
If you don't plan to use the text color utilities in your project, you can disable them entirely by setting the textColors
property to false
in the modules
section of your config file: